/// <summary> /// 创建访问excel的实例 /// </summary> /// <returns></returns> private DataAccessLibrary GetDal() { const string sql = "SELECT TOP 1 ConnString FROM Manage_DataBase WHERE (DataBaseID = 6)"; string excelPath = Dal.DalMetadata.ExecuteString(sql); string cnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + excelPath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; DataAccessLibrary acc = DalFactory.CreateDal(cnString, "System.Data.OleDb"); return(acc); }
//获取数据访问函数库的实例 private DataAccessLibrary CreateDalbyDataBaseID(string dataBaseID) { //数据库的连接字符串 const string sqlDataBase = @"SELECT ConnString, Provider FROM Manage_DataBase WHERE (DataBaseID = {0})"; string[] cnInfo = Dal.DalMetadata.ExecuteStringsBySingleRow(string.Format(sqlDataBase, dataBaseID)); DataAccessLibrary dal = DalFactory.CreateDal(cnInfo[0], cnInfo[1]); return(dal); }
protected override void OnPreLoad(EventArgs e) { base.OnPreLoad(e); HttpCookie ck = Request.Cookies["DataBaseID"]; string excelPath = ""; if (ck == null) { //没有cookies } string sql = ""; if (!Page.IsPostBack) { //获取选择文档的下拉列表 sql = @"SELECT DataBaseID AS id, DataTitle AS txt FROM Manage_DataBase WHERE (KindID = 3) AND (DataName = N'{0}')"; string dataName = ck.Value; if (!Functions.IsInt(dataName)) { dataName = "1"; } lstData.DataSource = Dal.DalMetadata.ExecuteFillDataTable(string.Format(sql, dataName)); lstData.DataBind(); } sql = "SELECT TOP 1 ConnString FROM Manage_DataBase WHERE (DataBaseID = {0})"; excelPath = Dal.DalMetadata.ExecuteString(string.Format(sql, this.lstData.SelectedValue)); //const string cnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=|DataDirectory|客户项目数据库设计.xls; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; //string cnString = "Provider=Microsoft.ACE.OLEDB.12.0; Data Source=" + excelPath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; string cnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + excelPath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; _acc = DalFactory.CreateDal(cnString, "System.Data.OleDb"); Pager1.Dal = _acc; _dalCustomer = Dal.DalCustomer; }
protected void LstDataSelectedIndexChanged(object sender, EventArgs e) { const string sql = "SELECT TOP 1 ConnString FROM Manage_DataBase WHERE (DataBaseID = {0})"; string excelPath = Dal.DalMetadata.ExecuteString(string.Format(sql, this.lstData.SelectedValue)); string cnString = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" + excelPath + "; Extended Properties='Excel 8.0;HDR=Yes;IMEX=1;'"; _acc = DalFactory.CreateDal(cnString, "System.Data.OleDb"); Pager1.Dal = _acc; Heidden(); GetTableName(); Btn_TableName.SelectedIndex = 0; }
//生成 private void BtnCreate_Click(object sender, EventArgs e) { new Thread(delegate() { try { var cm = ConfigurationManager.ConnectionStrings["DbContext"]; var dal = DalFactory.CreateDal(cm.ProviderName); var tableList = dal.GetAllTables(); const string strNamespace = "Entity"; #region 操作控件 InvokeDelegate invokeDelegate = delegate { btnCreate.Enabled = false; progressBar1.Visible = true; progressBar1.Minimum = 0; progressBar1.Maximum = tableList.Count; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion var i = 0; foreach (var table in tableList) { var sb = new StringBuilder(); //var sbExt = new StringBuilder(); var columnList = dal.GetAllColumns(table["table_name"]); #region 原始Model //sb.Append("using System;\r\n"); //sb.Append("using System.Collections.Generic;\r\n"); //sb.Append("using System.ComponentModel.DataAnnotations;"); //sb.Append("\r\n"); sb.Append("namespace " + strNamespace + "\r\n"); sb.Append("{\r\n"); sb.Append(" /// <summary>\r\n"); sb.Append(" /// " + table["comments"] + "\r\n"); sb.Append(" /// </summary>\r\n"); //sb.Append(" [Serializable]\r\n"); //sb.Append(" public partial class " + table["table_name"] + "\r\n"); sb.Append(" public class " + table["table_name"] + "\r\n"); sb.Append(" {\r\n"); foreach (var column in columnList) { var dataType = dal.ConvertDataType(column); sb.Append(" /// <summary>\r\n"); sb.Append(" /// " + column["comments"] + "\r\n"); sb.Append(" /// </summary>\r\n"); if (column["constraint_type"] == "P") { sb.Append(" [System.Data.Objects.DataClasses.EdmScalarProperty(EntityKeyProperty = true, IsNullable = false)]\r\n"); } //sb.Append(" [IsDBField]\r\n"); sb.Append(" public " + dataType + " " + column["columns_name"] + " { get; set; }\r\n"); } sb.Append(" }\r\n"); sb.Append("}\r\n"); FileHelper.WriteFile(AppDomain.CurrentDomain.BaseDirectory + strNamespace, sb.ToString(), table["table_name"]); #endregion #region 扩展Model //sbExt.Append("using System;\r\n"); //sbExt.Append("using System.Collections.Generic;\r\n"); //sbExt.Append("using System.Linq;\r\n"); //sbExt.Append("\r\n"); //sbExt.Append("namespace " + strNamespace + "\r\n"); //sbExt.Append("{\r\n"); //sbExt.Append(" /// <summary>\r\n"); //sbExt.Append(" /// " + table["comments"] + "\r\n"); //sbExt.Append(" /// </summary>\r\n"); //sbExt.Append(" public partial class " + table["table_name"] + "\r\n"); //sbExt.Append(" {\r\n"); //sbExt.Append("\r\n"); //sbExt.Append(" }\r\n"); //sbExt.Append("}\r\n"); //FileHelper.WriteFile(Application.StartupPath + "\\extmodels", sbExt.ToString(), table["table_name"]); #endregion #region 操作控件 invokeDelegate = delegate { progressBar1.Value = ++i; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion } #region 操作控件 invokeDelegate = delegate { btnCreate.Enabled = true; progressBar1.Visible = false; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion MessageBox.Show(@"生成完成"); } catch (Exception ex) { MessageBox.Show(ex.Message + Environment.NewLine + ex.StackTrace); } }).Start(); }
//生成 private void btnCreate_Click(object sender, EventArgs e) { new Thread(new ThreadStart(delegate() { try { IDal dal = DalFactory.CreateDal(ConfigurationManager.AppSettings["DBType"]); List <Dictionary <string, string> > tableList = dal.GetAllTables(); string strNamespace = ConfigurationManager.AppSettings["Namespace"]; string strClassTemplate = string.Empty; string strClassExtTemplate = string.Empty; string strFieldTemplate = string.Empty; Regex regField = new Regex(@"[ \t]*#field start([\s\S]*)#field end", RegexOptions.IgnoreCase); #region 操作控件 InvokeDelegate invokeDelegate = delegate() { btnCreate.Enabled = false; progressBar1.Visible = true; progressBar1.Minimum = 0; progressBar1.Maximum = tableList.Count; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion #region 读取模板 strClassTemplate = FileHelper.ReadFile(Application.StartupPath + "\\Template\\class.txt"); strClassExtTemplate = FileHelper.ReadFile(Application.StartupPath + "\\Template\\class_ext.txt"); Match matchField = regField.Match(strClassTemplate); if (matchField.Success) { strFieldTemplate = matchField.Groups[1].Value.TrimEnd(' '); } #endregion int i = 0; foreach (Dictionary <string, string> table in tableList) //遍历表 { string tableName = table["table_name"].ToUpper(); StringBuilder sbFields = new StringBuilder(); List <Dictionary <string, string> > columnList = dal.GetAllColumns(tableName); #region 原始Model string strClass = strClassTemplate.Replace("#table_comments", table["comments"]); strClass = strClass.Replace("#table_name", tableName); foreach (Dictionary <string, string> column in columnList) //遍历字段 { string data_type = dal.ConvertDataType(column); string strField = strFieldTemplate.Replace("#field_comments", column["comments"]); if (column["constraint_type"] != "P") { strField = strField.Replace(" [IsId]\r\n", string.Empty); } strField = strField.Replace("#data_type", data_type); strField = strField.Replace("#field_name", column["columns_name"].ToUpper()); sbFields.Append(strField); } strClass = regField.Replace(strClass, sbFields.ToString()); FileHelper.WriteFile(Application.StartupPath + "\\Models", strClass, tableName); #endregion #region 扩展Model string strClassExt = strClassExtTemplate.Replace("#table_comments", table["comments"]); strClassExt = strClassExt.Replace("#table_name", tableName); FileHelper.WriteFile(Application.StartupPath + "\\ExtModels", strClassExt.ToString(), tableName); #endregion #region 操作控件 invokeDelegate = delegate() { progressBar1.Value = ++i; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion } #region 操作控件 invokeDelegate = delegate() { btnCreate.Enabled = true; progressBar1.Visible = false; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion MessageBox.Show("完成"); } catch (Exception ex) { MessageBox.Show(ex.Message + "\r\n" + ex.StackTrace); } })).Start(); }
//生成 private void btnCreate_Click(object sender, EventArgs e) { new Thread(new ThreadStart(delegate() { IDal dal = DalFactory.CreateDal(ConfigurationManager.AppSettings["DBType"]); List <Dictionary <string, string> > tableList = dal.GetAllTables(); string strNamespace = ConfigurationManager.AppSettings["Namespace"]; #region 操作控件 InvokeDelegate invokeDelegate = delegate() { btnCreate.Enabled = false; progressBar1.Visible = true; progressBar1.Minimum = 0; progressBar1.Maximum = tableList.Count; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion int i = 0; foreach (Dictionary <string, string> table in tableList) { StringBuilder sb = new StringBuilder(); StringBuilder sbExt = new StringBuilder(); List <Dictionary <string, string> > columnList = dal.GetAllColumns(table["table_name"]); #region 原始Model sb.Append("using System;\r\n"); sb.Append("using System.Collections.Generic;\r\n"); sb.Append("using System.Linq;\r\n"); sb.Append("\r\n"); sb.Append("namespace " + strNamespace + "\r\n"); sb.Append("{\r\n"); sb.Append(" /// <summary>\r\n"); sb.Append(" /// " + table["comments"] + "\r\n"); sb.Append(" /// </summary>\r\n"); sb.Append(" [Serializable]\r\n"); sb.Append(" public partial class " + table["table_name"] + "\r\n"); sb.Append(" {\r\n"); foreach (Dictionary <string, string> column in columnList) { string data_type = dal.ConvertDataType(column); sb.Append(" /// <summary>\r\n"); sb.Append(" /// " + column["comments"] + "\r\n"); sb.Append(" /// </summary>\r\n"); if (column["constraint_type"] == "P") { sb.Append(" [IsId]\r\n"); } sb.Append(" [IsDBField]\r\n"); sb.Append(" public " + data_type + " " + column["columns_name"] + " { get; set; }\r\n"); } sb.Append(" }\r\n"); sb.Append("}\r\n"); FileHelper.WriteFile(Application.StartupPath + "\\models", sb.ToString(), table["table_name"]); #endregion #region 扩展Model sbExt.Append("using System;\r\n"); sbExt.Append("using System.Collections.Generic;\r\n"); sbExt.Append("using System.Linq;\r\n"); sbExt.Append("\r\n"); sbExt.Append("namespace " + strNamespace + "\r\n"); sbExt.Append("{\r\n"); sbExt.Append(" /// <summary>\r\n"); sbExt.Append(" /// " + table["comments"] + "\r\n"); sbExt.Append(" /// </summary>\r\n"); sbExt.Append(" public partial class " + table["table_name"] + "\r\n"); sbExt.Append(" {\r\n"); sbExt.Append("\r\n"); sbExt.Append(" }\r\n"); sbExt.Append("}\r\n"); FileHelper.WriteFile(Application.StartupPath + "\\extmodels", sbExt.ToString(), table["table_name"]); #endregion #region 操作控件 invokeDelegate = delegate() { progressBar1.Value = ++i; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion } #region 操作控件 invokeDelegate = delegate() { btnCreate.Enabled = true; progressBar1.Visible = false; progressBar1.Value = 0; }; InvokeUtil.Invoke(this, invokeDelegate); #endregion MessageBox.Show("完成"); })).Start(); }
//protected delegate void ActionToFunction(HttpContext context); //protected static Dictionary<string, ActionToFunction> ActionList = new Dictionary<string, ActionToFunction>(); /// <summary> /// 通过实现 <see cref="T:System.Web.IHttpHandler"/> 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。 /// </summary> /// <param name="context"><see cref="T:System.Web.HttpContext"/> 对象,它提供对用于为 HTTP 请求提供服务的内部服务器对象(如 Request、Response、Session 和 Server)的引用。</param> /// user:jyk /// time:2012/10/18 17:41 public void ProcessRequest(HttpContext context) { //记录一下,不用传参数了。 Context = context; //允许跨域的设置 #region string webAppId = HttpContext.Current.Request.QueryString["webappid"]; if (!string.IsNullOrEmpty(webAppId)) { string url = HttpContext.Current.Request.Url.Host; switch (webAppId) { case "1": //支撑平台 HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", "http://nature.com"); break; case "7": //芒果网站综合管理 HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", url.IndexOf("lc", System.StringComparison.Ordinal) >= 0 ? "http://192.168.3.96:8108" : "http://naturemanage.517.cn/"); break; case "4": //手机推广 HttpContext.Current.Response.AddHeader("Access-Control-Allow-Origin", url.IndexOf("lc", System.StringComparison.Ordinal) >= 0 ? "http://lcmobileplat.naturefw.com" : "http://mobileplat.naturefw.com"); break; } //"http://nature.com,http://192.168.3.96:8108" } HttpContext.Current.Response.AddHeader("Access-Control-Allow-Credentials", "true"); HttpContext.Current.Response.AddHeader("Access-Control-Allow-Headers", "POST, GET,Origin, X-Requested-With, Content-Type, Accept"); CallBack = context.Request.QueryString["callback"] ?? ""; //看看是不是跨域 if (CallBack.Length == 0) { //不是跨域application/json context.Response.ContentType = "text/plain"; //cors的方式跨域,运行访问的域名还需要处理 context.Response.Write("{"); } else { //跨域z!z\":0 context.Response.ContentType = "application/x-javascript"; context.Response.Write(CallBack + "({"); } #endregion //context.Response.ContentType = "application/json"; //要访问的数据库ID DataBaseID = Request["dbid"]; if (!Functions.IsIDString(DataBaseID)) { //context.Response.Write(string.IsNullOrEmpty(CallBack) ? re : string.Format("{0}({1})", CallBack, re)); //context.Response.End(); DataBaseID = null; } //看看是不是跨域表单post提交 ResourceUrl = context.Request.QueryString["reurl"] ?? ""; //看看是不是跨域表单post提交 //记录调试信息,经过了多少步骤,每个步骤用了多少毫秒 BaseDebug = new NatureDebug { StartTime = DateTime.Now, DetailList = new List <NatureDebugInfo>() }; DataAccessLibrary dal = DalFactory.CreateDal(); //[Content], string sql = "SELECT TOP (20) ArticleId, Category1Id, Title, AgreeCount, OppositionCount, DiscussCount, UserHits, Hits, AddUserID, AddTime FROM blog_Article WHERE(IsDel = 0)"; string str = dal.ManagerJson.ExecuteFillJsonByColName(sql); context.Response.Write(str); //模板模式,在子类里实现具体操作,便于流程控制 Process(); //流程完毕,输出json格式的debug信息 ProcessEnd(); }