/// <summary> /// 获取当前连接所有表集合 /// </summary> /// <returns></returns> public static List<TableContext> GetCurrentDatabaseAllTableContextList() { var list = new List<TableContext>(); const string sql = @" SELECT name FROM sysobjects WHERE xtype ='u' order by name"; var cmd = new SqlCommand(sql); using (var dataReader = _db.ExecuteReader(cmd)) { // Processing code while (dataReader.Read()) { var table = new TableContext(); table.TableName = dataReader.GetString(0); table.ColumnList = GetColumnContextListByTableName(table.TableName); list.Add(table); } } return list; }
/// <summary> /// Web层 列表页 aspx .cs文件 /// </summary> /// <param name="table"></param> void GeneratorWebProgramsListCs(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.WebProgramsListaspxCsTemplateUrl); //获取模板 StringBuilder webProgramsListDesignerCsTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Web + ".Programs." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 webProgramsListDesignerCsTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 webProgramsListDesignerCsTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 webProgramsListDesignerCsTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); webProgramsListDesignerCsTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); webProgramsListDesignerCsTemplate.Replace(GlobalContext.WebTag, GlobalContext.Web); //替换二级命名空间 webProgramsListDesignerCsTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //替换主键 var columnPk = table.ColumnList.FirstOrDefault(p => p.IsPk == true); if (columnPk != null) { webProgramsListDesignerCsTemplate.Replace(GlobalContext.PkName, columnPk.Name); } //替换搜索列表 var strList = new StringBuilder(); foreach (var column in table.ColumnList) { //是否基类部分 if (column.Name == "CreateTime" || column.Name == "UpdateTime" || column.Name == "IsDelete" || column.Name == "CreateUser" || column.Name == "UpdateUser" || column.Name == "Version" || column.IsPk) { continue; } strList.AppendLine("//" + column.NameDescription); strList.AppendLine("if (Request[\"" + column.Name + "\"] != null && !string.IsNullOrWhiteSpace(Request[\"" + column.Name + "\"]))"); strList.AppendLine("{"); if (column.DateType.Equals("int")) { strList.AppendLine("WhereStr += \" and " + column.Name + " =\" + Request[\"" + column.Name + "\"];"); } else if (column.DateType.Equals("varchar") || column.DateType.Equals("nvarchar")) { strList.AppendLine("WhereStr += \" and " + column.Name + " like '%\" + Request[\"" + column.Name + "\"]+\"%'\";"); } strList.AppendLine("}"); strList.AppendLine(); } //替换属性列表 webProgramsListDesignerCsTemplate.Replace(GlobalContext.PropertySearchListStr, strList.ToString()); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "List.aspx.cs"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(webProgramsListDesignerCsTemplate, fileWriterFilePath); }
/// <summary> /// Web层 列表页 aspx designer.cs文件 /// </summary> /// <param name="table"></param> void GeneratorWebProgramsListDesignerCs(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.WebProgramsListaspxDesignerCsTemplateUrl); //获取模板 StringBuilder webProgramsListDesignerCsTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Web + ".Programs." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 webProgramsListDesignerCsTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 webProgramsListDesignerCsTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 webProgramsListDesignerCsTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); webProgramsListDesignerCsTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); webProgramsListDesignerCsTemplate.Replace(GlobalContext.WebTag, GlobalContext.Web); //替换二级命名空间 webProgramsListDesignerCsTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "List.aspx.designer.cs"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(webProgramsListDesignerCsTemplate, fileWriterFilePath); }
/// <summary> /// 生成Web Ajax一般处理程序 cs文件 /// </summary> /// <param name="table"></param> void GeneratorWebAjaxAshxcs(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.WebAjaxAshxCsTemplateUrl); //获取模板 StringBuilder webAjaxAshxcsTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Web + ".Ajax." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 webAjaxAshxcsTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 webAjaxAshxcsTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 webAjaxAshxcsTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); webAjaxAshxcsTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); webAjaxAshxcsTemplate.Replace(GlobalContext.WebTag, GlobalContext.Web); //替换二级命名空间 webAjaxAshxcsTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //替换主键 var columnPk = table.ColumnList.FirstOrDefault(p => p.IsPk == true); if (columnPk != null) { webAjaxAshxcsTemplate.Replace(GlobalContext.PkName, columnPk.Name); } //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "Service.ashx.cs"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(webAjaxAshxcsTemplate, fileWriterFilePath); }
/// <summary> /// 生成BLL BLL实现 /// </summary> /// <param name="table"></param> void GeneratorBLLBLL(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.BllbllTemplateUrl); //获取模板 StringBuilder daoIDaoTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Bll + ".Impl." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 daoIDaoTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 daoIDaoTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 daoIDaoTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); daoIDaoTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); //替换二级命名空间 daoIDaoTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "Manager.cs"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(daoIDaoTemplate, fileWriterFilePath); }
/// <summary> /// 生产Domain(类型模型) Xml(文件) /// </summary> /// <param name="table"></param> void GeneratorDomainXml(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.DomainXmlTemplateUrl); //获取模板 StringBuilder domainXmlTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Domain + ".Entities." + GlobalContext.CurrentConfigNameSpace; var nameSpaceEntity = GlobalContext.Domain + ".Mappings." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 domainXmlTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 domainXmlTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 domainXmlTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); //替换属性列表 var strList = new StringBuilder(); foreach (var column in table.ColumnList) { //是否基类部分 if (column.Name == "CreateTime" || column.Name == "UpdateTime" || column.Name == "IsDelete" || column.Name == "CreateUser" || column.Name == "UpdateUser" || column.Name == "Version") { continue; } //检查是否为主键 if (column.IsPk) { domainXmlTemplate.Replace(GlobalContext.PkName, column.Name); continue; } //length=\"36\" //not-null=\"true\" var row = "<property name=\"" + column.Name + "\" column=\"" + column.Name + "\" type=\"" + (column.DateType.Equals("int") ? "integer" : Tools.ConvertVSType(column.DateType).Name.ToLower()) + "\" {0} {1} />"; var lengthStr = ""; if (column.DateType.Equals("nvarchar") || column.DateType.Equals("varchar")) { lengthStr = "length=\"" + column.Length + "\""; } var isNullStr = ""; if (!column.IsNull) { isNullStr = "not-null=\"true\""; } var rowFormat = string.Format(row, lengthStr, isNullStr); strList.AppendLine(rowFormat); } strList.AppendLine(); //替换属性列表 domainXmlTemplate.Replace(GlobalContext.ProPertyXmlList, strList.ToString()); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpaceEntity.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + ".hbm.xml"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(domainXmlTemplate, fileWriterFilePath); }
/// <summary> /// 生成Domain(领域模型) Entity(实体类) /// </summary> /// <param name="table"></param> void GeneratorDomainEntity(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.DomainEntityTemplateUrl); //获取模板 StringBuilder domainEntityTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Domain + ".Entities." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 domainEntityTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 domainEntityTemplate.Replace(GlobalContext.TableName, table.TableName); //替换属性列表 var strList = new StringBuilder(); foreach (var column in table.ColumnList) { //是否基类部分 if (column.Name == "CreateTime" || column.Name == "UpdateTime" || column.Name == "IsDelete" || column.Name == "CreateUser" || column.Name == "UpdateUser" || column.Name == "Version" || column.IsPk) { continue; } strList.AppendLine("/// <summary>"); strList.AppendLine("///" + column.NameDescription); strList.AppendLine("/// </summary>"); strList.AppendLine("public virtual " + (column.DateType.Equals("int") ? "int" : Tools.ConvertVSType(column.DateType).Name.ToLower()) + " " + column.Name + " { get; set; }"); strList.AppendLine(); } //替换属性列表 domainEntityTemplate.Replace(GlobalContext.ProPertyList, strList.ToString()); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + ".cs"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(domainEntityTemplate, fileWriterFilePath); }
/// <summary> /// Web层 Add页 aspx .cs文件 /// </summary> /// <param name="table"></param> void GeneratorWebProgramsAddAspx(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.WebProgramsAddaspxTemplateUrl); //获取模板 StringBuilder webProgramsListAspxTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Web + ".Programs." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 webProgramsListAspxTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 webProgramsListAspxTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 webProgramsListAspxTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); webProgramsListAspxTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); webProgramsListAspxTemplate.Replace(GlobalContext.WebTag, GlobalContext.Web); //替换二级命名空间 webProgramsListAspxTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //替换主键 var columnPk = table.ColumnList.FirstOrDefault(p => p.IsPk == true); if (columnPk != null) { webProgramsListAspxTemplate.Replace(GlobalContext.PkName, columnPk.Name); } //内容部分 var strList = new StringBuilder(); foreach (var column in table.ColumnList) { //是否基类部分 if (column.Name == "CreateTime" || column.Name == "UpdateTime" || column.Name == "IsDelete" || column.Name == "CreateUser" || column.Name == "UpdateUser" || column.Name == "Version" || column.IsPk) { continue; } //内容部分 strList.AppendLine(" <div class=\"unit\">"); strList.AppendLine(" <label>"); strList.AppendLine(" " + column.NameDescription + ":</label>"); if ((column.DateType.Equals("varchar") || column.DateType.Equals("nvarchar")) && column.Length >= 300) { strList.AppendLine("<textarea type=\"text\" name=\"" + column.Name + "\" cols=\"30\" rows=\"4\"></textarea>"); } else { strList.AppendLine(" <input type=\"text\" name=\"" + column.Name + "\" size=\"30\" value='' " + (column.IsNull ? "" : "class=\"required\" ") + " />"); } strList.AppendLine(" </div>"); strList.AppendLine(); } //替换内容部分 webProgramsListAspxTemplate.Replace(GlobalContext.ProPertyList, strList.ToString()); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "Add.aspx"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(webProgramsListAspxTemplate, fileWriterFilePath); }
/// <summary> /// Web层 列表页 aspx .cs文件 /// </summary> /// <param name="table"></param> void GeneratorWebProgramsListAspx(TableContext table) { string templatePath = Path.Combine(GlobalContext.ApplicationStartPath, GlobalContext.WebProgramsListaspxTemplateUrl); //获取模板 StringBuilder webProgramsListAspxTemplate = Tools.GetTemplate(templatePath); var nameSpace = GlobalContext.Web + ".Programs." + GlobalContext.CurrentConfigNameSpace; //替换命名空间 webProgramsListAspxTemplate.Replace(GlobalContext.NameSpace, nameSpace); //替换类名 webProgramsListAspxTemplate.Replace(GlobalContext.TableName, table.TableName); //替换程序集名称 webProgramsListAspxTemplate.Replace(GlobalContext.DomainTag, GlobalContext.Domain); webProgramsListAspxTemplate.Replace(GlobalContext.BllTag, GlobalContext.Bll); webProgramsListAspxTemplate.Replace(GlobalContext.WebTag, GlobalContext.Web); //替换二级命名空间 webProgramsListAspxTemplate.Replace(GlobalContext.ConfigNameSpace, GlobalContext.CurrentConfigNameSpace); //替换主键 var columnPk = table.ColumnList.FirstOrDefault(p => p.IsPk == true); if (columnPk != null) { webProgramsListAspxTemplate.Replace(GlobalContext.PkName, columnPk.Name); } //替换搜索列表 var strList = new StringBuilder(); //表头部分 var strTableHeaderListStr = new StringBuilder(); //列表页内容部分 var strTableContextListStr = new StringBuilder(); foreach (var column in table.ColumnList) { //是否基类部分 if (column.Name == "CreateTime" || column.Name == "UpdateTime" || column.Name == "IsDelete" || column.Name == "CreateUser" || column.Name == "UpdateUser" || column.Name == "Version" || column.IsPk) { continue; } //查询部分 strList.AppendLine("<td>"); strList.AppendLine(column.NameDescription + "<input type=\"text\" name=\"" + column.Name + "\" value=\"<%=Request[\"" + column.Name + "\"] ?? string.Empty %>\" />"); strList.AppendLine("</td>"); strList.AppendLine(); //表头部分 strTableHeaderListStr.AppendLine("<th>"); strTableHeaderListStr.AppendLine(column.NameDescription); strTableHeaderListStr.AppendLine("</th>"); //表内容部分 strTableContextListStr.AppendLine("<td>"); strTableContextListStr.AppendLine("<%=model." + column.Name + " %>"); strTableContextListStr.AppendLine("</td>"); } //替换查询部分 webProgramsListAspxTemplate.Replace(GlobalContext.PropertySearchListStr, strList.ToString()); //表头部分 webProgramsListAspxTemplate.Replace(GlobalContext.PropertyTabelHeaderListStr, strTableHeaderListStr.ToString()); //内容部分 webProgramsListAspxTemplate.Replace(GlobalContext.PropertyTabelContextListStr, strTableContextListStr.ToString()); //写入文件的文件夹路径 string fileWriterFolderPath = Path.Combine(GlobalContext.ApplicationStartPath + "\\CodeGenerator", nameSpace.Replace('.', '\\')); var fileWriterFilePath = fileWriterFolderPath + "\\" + table.TableName + "List.aspx"; Tools.CheckDirectory(fileWriterFolderPath); Tools.WriterTemplateFile(webProgramsListAspxTemplate, fileWriterFilePath); }