/// <summary> /// 创建反射工厂类 /// </summary> public static string GetDALFactoryCode(List <Model.Table> tables, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); AppendFormatLine(code, 0, "using System;"); AppendFormatLine(code, 0, "using System.Configuration;"); AppendFormatLine(code, 0, "using System.Collections.Generic;"); AppendFormatLine(code, 0, "using System.Text;"); AppendFormatLine(code, 0, "using System.Reflection;"); code.AppendLine(); AppendFormatLine(code, 0, "namespace DALFactory"); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "public class DataAccess"); AppendFormatLine(code, 1, "{"); AppendFormatLine(code, 2, "private static readonly string path = ConfigurationManager.AppSettings[\"WebDAL\"];"); foreach (Model.Table table in tables) { code.AppendLine(); AppendFormatLine(code, 2, "public static {0}.I{1} Create{2}{3}()", style.IDALNameSpace, table.Name, style.AfterNamespace, table.Name); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "string className = path + \".{0}{1}\";", style.AfterNamespaceDot, table.Name); AppendFormatLine(code, 3, "return ({0}.I{1})Assembly.Load(path).CreateInstance(className);", style.IDALNameSpace, table.Name); AppendFormatLine(code, 2, "}"); } AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
public static string GetDependencyFacadeCode(List <Model.Table> tables, Model.CodeStyle style) { StringBuilder code = new StringBuilder(); AppendFormatLine(code, 0, "using System;"); AppendFormatLine(code, 0, "using System.Collections.Generic;"); AppendFormatLine(code, 0, "using System.Text;"); AppendFormatLine(code, 0, "using System.Configuration;"); AppendFormatLine(code, 0, "using System.Web.Caching;"); code.AppendLine(); AppendFormatLine(code, 0, "namespace CacheDependencyFactory"); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "public class DependencyFacade"); AppendFormatLine(code, 1, "{"); AppendFormatLine(code, 2, "private static readonly string path = ConfigurationManager.AppSettings[\"CacheDependencyAssembly\"];"); foreach (Model.Table table in tables) { code.AppendLine(); AppendFormatLine(code, 2, "public static AggregateCacheDependency Get{0}{1}CacheDependency()", style.AfterNamespace, table.Name); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "if (!string.IsNullOrEmpty(path))"); AppendFormatLine(code, 4, "return DependencyAccess.Create{0}{1}Dependency().GetDependency();", style.AfterNamespace, table.Name); AppendFormatLine(code, 3, "else"); AppendFormatLine(code, 4, "return null;"); AppendFormatLine(code, 2, "}"); } AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); code.AppendLine(); code.AppendLine(); return(CommonCode.GetCSharpCopyrightCode() + code.ToString()); }
public static string GetDependencyAccessCode(List <Model.Table> tables, Model.CodeStyle style) { StringBuilder code = new StringBuilder(); code.AppendLine("using System;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine("using System.Text;"); code.AppendLine("using System.Web.Caching;"); code.AppendLine("using System.Configuration;"); code.AppendLine("using System.Reflection;"); code.AppendLine("using " + style.BeforeNamespaceDot + "ICacheDependency;"); code.AppendLine(""); code.AppendLine("namespace " + style.BeforeNamespaceDot + "CacheDependencyFactory"); code.AppendLine("{"); code.AppendLine(" public class DependencyAccess"); code.AppendLine(" {"); foreach (Model.Table table in tables) { code.AppendLine(" public static ISocansoftCacheDependency Create" + style.AfterNamespace + table.Name + "Dependency()"); code.AppendLine(" {"); code.AppendLine(" return LoadInstance(\"" + style.AfterNamespaceDot + table.Name + "\");"); code.AppendLine(" }"); code.AppendLine(""); } code.AppendLine(" private static ISocansoftCacheDependency LoadInstance(string className)"); code.AppendLine(" {"); code.AppendLine(" string path = ConfigurationManager.AppSettings[\"CacheDependencyAssembly\"];"); code.AppendLine(" string fullQualifiedClass = path + \".\" + className;"); code.AppendLine(" return (ISocansoftCacheDependency)Assembly.Load(path).CreateInstance(fullQualifiedClass);"); code.AppendLine(" }"); code.AppendLine(" }"); code.AppendLine("}"); return(CommonCode.GetCSharpCopyrightCode() + code.ToString()); }
/// <summary> /// 创建反射工厂类 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetDALFactoryCode(List <Model.Table> lstTables, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine("using System.Configuration;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine("using System.Text;"); code.AppendLine("using System.Reflection;"); code.AppendLine("using " + style.BeforeNamespaceDot + "IDAL" + style.DotAfterNamespace + ";"); code.AppendLine(""); code.AppendLine("namespace DALFactory"); code.AppendLine("{"); code.AppendLine(" public class DataAccess"); code.AppendLine(" {"); code.AppendLine(" private static readonly string path = ConfigurationManager.AppSettings[\"WebDAL\"];"); foreach (Model.Table table in lstTables) { code.AppendLine(""); code.AppendLine(" public static I" + table.Name + " Create" + style.AfterNamespace + table.Name + "()"); code.AppendLine(" {"); code.AppendLine(" string className = path + \"." + style.AfterNamespaceDot + table.Name + "\";"); code.AppendLine(" return (I" + table.Name + ")Assembly.Load(path).CreateInstance(className);"); code.AppendLine(" }"); } code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }
public static string GetDependencyAccessCode(List <Model.Table> tables, Model.CodeStyle style) { StringBuilder code = new StringBuilder(); AppendFormatLine(code, 0, "using System;"); AppendFormatLine(code, 0, "using System.Collections.Generic;"); AppendFormatLine(code, 0, "using System.Text;"); AppendFormatLine(code, 0, "using System.Web.Caching;"); AppendFormatLine(code, 0, "using System.Configuration;"); AppendFormatLine(code, 0, "using System.Reflection;"); code.AppendLine(); AppendFormatLine(code, 0, "namespace CacheDependencyFactory"); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "public class DependencyAccess"); AppendFormatLine(code, 1, "{"); foreach (Model.Table table in tables) { AppendFormatLine(code, 2, "public static ICacheDependency.ISocansoftCacheDependency Create{0}{1}Dependency()", style.AfterNamespace, table.Name); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "return LoadInstance(\"{0}{1}\");", style.AfterNamespaceDot, table.Name); AppendFormatLine(code, 2, "}"); code.AppendLine(); } AppendFormatLine(code, 2, "private static ICacheDependency.ISocansoftCacheDependency LoadInstance(string className)"); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "string path = ConfigurationManager.AppSettings[\"CacheDependencyAssembly\"];"); AppendFormatLine(code, 3, "string fullQualifiedClass = path + \".\" + className;"); AppendFormatLine(code, 3, "return (ICacheDependency.ISocansoftCacheDependency)Assembly.Load(path).CreateInstance(fullQualifiedClass);"); AppendFormatLine(code, 2, "}"); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(CommonCode.GetCSharpCopyrightCode() + code.ToString()); }
/// <summary> /// 生成Model实体层代码 /// </summary> public static string GetModelCode(Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); Head(code, style); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 实体类 {0}", table.Name); AppendFormatLine(code, 1, "/// </summary>"); AppendFormatLine(code, 1, "public partial class {0}", table.Name); AppendFormatLine(code, 1, "{"); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成DAL数据层(Internal) /// </summary> public static string GetInternalDALCode(Model.Database db, Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); Head(db, table, style, code); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 数据访问类 {0} ,此类请勿动,以方便表字段更改时重新生成覆盖", table.Name); AppendFormatLine(code, 1, "/// </summary>"); AppendFormatLine(code, 1, "public partial class {0}", table.Name); AppendFormatLine(code, 1, "{"); PrepareAddCommand(db, table, style, code); code.AppendLine(); PrepareUpdateCommand(db, table, style, code); code.AppendLine(); PrepareDeleteCommand(db, table, style, code); code.AppendLine(); PrepareExistCommand(db, table, style, code); code.AppendLine(); PrepareGetModelCommand(db, table, style, code); code.AppendLine(); PrepareModel(db, table, style, code); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成IDAL接口层代码 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetIDALCode(Model.Table table, Model.CodeStyle style) { List <Model.Field> l = table.Fields; bool HasIdentifierRow; Model.Field IdentifierRow = CodeHelper.GetKeyField(table, out HasIdentifierRow); StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine("using System.Data;"); code.AppendLine("using System.Collections;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine(""); code.AppendLine("namespace " + style.BeforeNamespaceDot + "IDAL" + style.DotAfterNamespace); code.AppendLine("{"); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 接口层 I" + table.Name + ""); code.AppendLine(" /// </summary>"); code.AppendLine(" public interface I" + table.Name + ""); code.AppendLine(" {"); code.AppendLine(" #region 成员方法"); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 增加一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" int Add(" + CodeHelper.GetModelClass(table, style) + " model);"); code.AppendLine(""); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 更新一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" bool Update(" + CodeHelper.GetModelClass(table, style) + " model);"); code.AppendLine(""); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 删除一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" bool Delete(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + " " + IdentifierRow.FieldName + ");"); code.AppendLine(""); if (IdentifierRow.FieldType == Model.DataType.intType || IdentifierRow.FieldType == Model.DataType.bigintType || IdentifierRow.FieldType == Model.DataType.smallintType || IdentifierRow.FieldType == Model.DataType.tinyintType) { code.AppendLine(" /// <summary>"); code.AppendLine(" /// 得到最大ID"); code.AppendLine(" ///</summary>"); code.AppendLine(" int GetMaxId();"); code.AppendLine(""); } code.AppendLine(" /// <summary>"); code.AppendLine(" /// 是否存在该记录"); code.AppendLine(" /// </summary>"); code.AppendLine(" bool Exists(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + " " + IdentifierRow.FieldName + ");"); code.AppendLine(""); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 得到一个对象实体"); code.AppendLine(" /// </summary>"); code.AppendLine(" " + CodeHelper.GetModelClass(table, style) + " GetModel(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + " " + IdentifierRow.FieldName + ");"); code.AppendLine(""); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 获取泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" List<" + CodeHelper.GetModelClass(table, style) + "> GetList();"); code.AppendLine(""); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 分页获取泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" List<" + CodeHelper.GetModelClass(table, style) + "> GetList(int pageSize, int pageIndex, string fldSort, bool sort, string strCondition, out int counts);"); code.AppendLine(" #endregion"); code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }
/// <summary> /// 生成IDAL接口层代码 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetIDALCode(Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); AppendFormatLine(code, 0, "using System;"); AppendFormatLine(code, 0, "using System.Data;"); AppendFormatLine(code, 0, "using System.Collections;"); AppendFormatLine(code, 0, "using System.Collections.Generic;"); code.AppendLine(); AppendFormatLine(code, 0, "namespace {0}", style.IDALNameSpace); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 接口层 I{0}", table.Name); AppendFormatLine(code, 1, "/// </summary>"); AppendFormatLine(code, 1, "public interface I{0}", table.Name); AppendFormatLine(code, 1, "{"); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 增加一条数据"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "int Add({0}.{1} model);", style.ModelNameSpace, table.Name); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 更新一条数据"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "int Update({0}.{1} model);", style.ModelNameSpace, table.Name); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 删除一条数据"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "int Delete({0});", CodeHelper.GetArgumentsOfFunction(table)); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 是否存在该记录"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "bool Exists({0});", CodeHelper.GetArgumentsOfFunction(table)); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 得到一个对象实体"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "{0}.{1} GetModel({2});", style.ModelNameSpace, table.Name, GetArgumentsOfFunction(table)); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 获取数据条数"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "int GetCount();"); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 获取泛型数据列表"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "List<{0}.{1}> GetList();", style.ModelNameSpace, table.Name); code.AppendLine(); AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 分页获取泛型数据列表"); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "PageList<{0}.{1}> GetPageList(PageInfo pi);", style.ModelNameSpace, table.Name); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成业务逻辑层.cs /// </summary> public static string GetBLCSCode(Model.Database db, Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); AppendFormatLine(code, 0, "using System;"); if (style.SlnFrame == Model.CodeStyle.SlnFrames.Factory) { AppendFormatLine(code, 0, "using DALFactory;"); } if (style.BlFrame == Model.CodeStyle.BLFrame.BLS) { AppendFormatLine(code, 0, "using System.Web.Services;"); AppendFormatLine(code, 0, "using System.ComponentModel;"); } AppendFormatLine(code, 0, "using System.Collections.Generic;"); AppendFormatLine(code, 0, "using System.Text.RegularExpressions;"); AppendFormatLine(code, 0, "using System.Web;"); if (style.CacheFrame != Model.CodeStyle.CacheFrames.None) { AppendFormatLine(code, 0, "using System.Web.Caching;"); } code.AppendLine(); AppendFormatLine(code, 0, "namespace {0}", style.BLNameSpace); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 业务逻辑类 {0}", table.Name); AppendFormatLine(code, 1, "/// </summary>"); if (style.BlFrame == Model.CodeStyle.BLFrame.BLS) { AppendFormatLine(code, 1, "[WebService(Namespace = \"http://www.Socansoft.com/\")]"); AppendFormatLine(code, 1, "[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]"); AppendFormatLine(code, 1, "[ToolboxItem(false)]"); } AppendFormatLine(code, 1, "public class {0} : BLHelper", table.Name); AppendFormatLine(code, 1, "{"); if (style.SlnFrame == Model.CodeStyle.SlnFrames.Factory) { AppendFormatLine(code, 2, "private readonly {0}.I{1} dal = DataAccess.Create{2}{3}();", style.IDALNameSpace, table.Name, style.AfterNamespace, table.Name); } else { AppendFormatLine(code, 2, "private readonly {0}.{1} dal = new {0}.{1}();", style.DALNameSpace, table.Name); } AppendFormatLine(code, 2, "public {0}()", table.Name); if (style.CacheFrame != Model.CodeStyle.CacheFrames.None) { AppendFormatLine(code, 3, ": base(\"{0}{1}_\")", style.AfterNamespaceLine, table.Name); } AppendFormatLine(code, 2, "{ }"); code.AppendLine(); switch (style.CacheFrame) { case Model.CodeStyle.CacheFrames.None: code.Append(ReadFromTemplate(Model.CreateStyle.CURRENT_PATH + "\\BL\\None.template", db, table, style)); break; case Model.CodeStyle.CacheFrames.ObjectCache: code.Append(ReadFromTemplate(Model.CreateStyle.CURRENT_PATH + "\\BL\\ObjectCache.template", db, table, style)); break; case Model.CodeStyle.CacheFrames.AggregateDependency: code.Append(ReadFromTemplate(Model.CreateStyle.CURRENT_PATH + "\\BL\\AggregateDependency.template", db, table, style)); break; case Model.CodeStyle.CacheFrames.ObjectCacheAndAggregateDependency: code.Append(ReadFromTemplate(Model.CreateStyle.CURRENT_PATH + "\\BL\\ObjectCacheAndAggregateDependency.template", db, table, style)); break; default: break; } AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成Model实体层代码 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetModelCode(Model.Table table, Model.CodeStyle style) { List <Model.Field> l = table.Fields; StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine(""); code.AppendLine("namespace " + style.BeforeNamespaceDot + "Model" + style.DotAfterNamespace); code.AppendLine("{"); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 实体类 " + table.Name); code.AppendLine(" /// </summary>"); code.AppendLine(" public class " + table.Name); code.AppendLine(" {"); #region 空构造函数 code.AppendLine(" public " + table.Name + "()"); code.AppendLine(" { }"); #endregion code.AppendLine(); #region 构造函数 code.AppendLine(" /// <summary>"); code.AppendLine(" /// " + "构造函数 " + table.Name); code.AppendLine(" /// </summary>"); foreach (Model.Field field in table.Fields) { code.AppendLine(" /// <param name=\"" + FirstLower(field.FieldName) + "\">" + field.FieldDescn + "</param>"); } code.Append(" public " + table.Name + "("); foreach (Model.Field field in table.Fields) { code.Append(CodeUtility.TypeConverter.DataTypeToCSharpTypeString(field.FieldType) + " " + FirstLower(field.FieldName) + ", "); //参数列表 } code.Remove(code.Length - 2, 2); code.Append(")"); code.AppendLine(); code.AppendLine(" {"); foreach (Model.Field field in table.Fields) { code.AppendLine(" _" + FirstLower(field.FieldName) + " = " + FirstLower(field.FieldName) + ";"); //赋值 } code.AppendLine(" }"); #endregion code.AppendLine(); code.AppendLine(" #region Model"); foreach (Model.Field model in l) { code.AppendLine(" private " + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(model.FieldType) + " _" + FirstLower(model.FieldName) + ";"); } foreach (Model.Field model in l) { code.AppendLine(" /// <summary>"); code.AppendLine(" /// " + model.FieldDescn); code.AppendLine(" /// </summary>"); code.AppendLine(" public " + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(model.FieldType) + " " + model.FieldName); code.AppendLine(" {"); code.AppendLine(" set { _" + FirstLower(model.FieldName) + " = value; }"); code.AppendLine(" get { return _" + FirstLower(model.FieldName) + "; }"); code.AppendLine(" }"); } code.AppendLine(" #endregion Model"); code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }
/// <summary> /// 生成BLL业务逻辑层 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetBLLCode(Model.Database.DatabaseType dbType, Model.Table table, Model.CodeStyle style) { List <Model.Field> l = table.Fields; bool HasIdentifierRow; Model.Field IdentifierRow = CodeHelper.GetKeyField(table, out HasIdentifierRow); StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine("using System.Data;"); if (style.CodeFrame == Model.CodeStyle.CodeFrames.Factory) { code.AppendLine("using DALFactory;"); } code.AppendLine("using " + style.BeforeNamespaceDot + "Model" + style.DotAfterNamespace + ";"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine("using System.Text;"); code.AppendLine("using System.Web;"); code.AppendLine("using System.Web.Caching;"); code.AppendLine(""); code.AppendLine("namespace " + style.BeforeNamespaceDot + "BLL" + style.DotAfterNamespace); code.AppendLine("{"); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 业务逻辑类 " + table.Name); code.AppendLine(" /// </summary>"); if (style.CacheFrame == Model.CodeStyle.CacheFrames.None) { code.AppendLine(" public class " + table.Name); } else { code.AppendLine(" public class " + table.Name + " : RemoveCaches"); } code.AppendLine(" {"); if (style.CodeFrame == Model.CodeStyle.CodeFrames.Factory) { code.AppendLine(" private readonly " + style.BeforeNamespaceDot + "IDAL" + style.DotAfterNamespace + "." + "I" + table.Name + " dal = DataAccess.Create" + style.DotAfterNamespace.Replace(".", "") + table.Name + "();"); } else { if (dbType == Model.Database.DatabaseType.Access) { code.AppendLine(" private readonly " + style.BeforeNamespaceDot + "AccessDAL" + style.DotAfterNamespace + "." + table.Name + " dal = new " + style.BeforeNamespaceDot + "AccessDAL" + style.DotAfterNamespace + "." + table.Name + "();"); } else { code.AppendLine(" private readonly " + style.BeforeNamespaceDot + "SQLServerDAL" + style.DotAfterNamespace + "." + table.Name + " dal = new " + style.BeforeNamespaceDot + "SQLServerDAL" + style.DotAfterNamespace + "." + table.Name + "();"); } } code.AppendLine(" public " + table.Name + "()"); if (style.CacheFrame != Model.CodeStyle.CacheFrames.None) { code.AppendLine(" : base(\"" + style.AfterNamespaceLine + table.Name + "_\")"); } code.AppendLine(" { }"); code.AppendLine(""); switch (style.CacheFrame) { case Model.CodeStyle.CacheFrames.None: code.Append(CodeUtility.CodeHelper.ReadFromTemplate(System.Windows.Forms.Application.StartupPath + "\\BLL\\None.template", null, table, IdentifierRow, style)); break; case Model.CodeStyle.CacheFrames.Cache: code.Append(CodeUtility.CodeHelper.ReadFromTemplate(System.Windows.Forms.Application.StartupPath + "\\BLL\\Cache.template", null, table, IdentifierRow, style)); break; case Model.CodeStyle.CacheFrames.AggregateDependency: code.Append(CodeUtility.CodeHelper.ReadFromTemplate(System.Windows.Forms.Application.StartupPath + "\\BLL\\AggregateDependency.template", null, table, IdentifierRow, style)); break; default: break; } code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }
/// <summary> /// 生成DAL数据层 /// </summary> public static string GetDALCode(Model.Database db, Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); Head(db, table, style, code); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 数据访问类 {0}", table.Name); AppendFormatLine(code, 1, "/// </summary>"); if (style.SlnFrame == Model.CodeStyle.SlnFrames.Factory) { AppendFormatLine(code, 1, "public partial class {0} : DALHelper, {1}.I{0}", table.Name, style.IDALNameSpace); } else { AppendFormatLine(code, 1, "public partial class {0} : DALHelper", table.Name); } AppendFormatLine(code, 1, "{"); Add(db, table, style, code); code.AppendLine(); Update(db, table, style, code); code.AppendLine(); Delete(db, table, style, code); code.AppendLine(); GetModel(db, table, style, code); code.AppendLine(); Exists(db, table, style, code); code.AppendLine(); GetCount(db, table, style, code); code.AppendLine(); GetList(db, table, style, code); code.AppendLine(); GetPageList(db, table, style, code); code.AppendLine(); AppendFormatLine(code, 2, "#region -------- 私有方法 --------"); GetModelPrivate(db, table, style, code); code.AppendLine(); GetListPrivate(db, table, style, code); if (style.PageStyle == Model.CodeStyle.PageStyles.DataReader) { code.AppendLine(); GetPageListPrivate(db, table, style, code); } AppendFormatLine(code, 2, "#endregion"); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
public static string GetICacheDependencyCode(Model.CodeStyle style) { return(CommonCode.GetCSharpCopyrightCode() + CodeUtility.CodeHelper.ReadFromTemplate(System.Windows.Forms.Application.StartupPath + "\\ICacheDependency\\ICacheDependency.template", null, null, null, style)); }
/// <summary> /// 生成DAL数据层 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetDALCode(Model.Database.DatabaseType type, Model.Table table, Model.CodeStyle style) { List <Model.Field> fields = table.Fields; bool hasIdentifierRow; Model.Field keyRow = CodeUtility.CodeHelper.GetKeyField(table, out hasIdentifierRow); StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine("using System.Data;"); code.AppendLine("using System.Text;"); code.AppendLine("using " + Model.Database.GetUsing(type) + ";"); if (style.CodeFrame == Model.CodeStyle.CodeFrames.Factory) { code.AppendLine("using " + style.BeforeNamespaceDot + "IDAL" + style.DotAfterNamespace + ";"); } code.AppendLine("using System.Collections;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine(""); code.AppendLine("namespace " + style.BeforeNamespaceDot + Model.Database.GetDALNamespace(type) + style.DotAfterNamespace); code.AppendLine("{"); code.AppendLine(" /// <summary>"); code.AppendLine(" /// 数据访问类 " + table.Name); code.AppendLine(" /// </summary>"); if (style.CodeFrame == Model.CodeStyle.CodeFrames.Factory) { code.AppendLine(" public class " + table.Name + " : I" + table.Name); } else { code.AppendLine(" public class " + table.Name); } code.AppendLine(" {"); code.AppendLine(" public " + table.Name + "()"); code.AppendLine(" { }"); code.AppendLine(""); code.AppendLine(" #region 成员方法"); #region 增加一条数据 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 增加一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" public int Add(" + CodeHelper.GetModelClass(table, style) + " model)"); code.AppendLine(" {"); //没有标识列的情况下,要手动得到主键的值 if (!hasIdentifierRow) { if (DBUtility.SqlHelper.IsIntClassType(keyRow)) { code.AppendLine(" model." + keyRow.FieldName + " = GetMaxId() + 1;"); } if (keyRow.FieldType == Model.DataType.uniqueidentifierType) { code.AppendLine(" model." + keyRow.FieldName + " = Guid.NewGuid();"); } } switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" StringBuilder strSql = new StringBuilder();"); code.AppendLine(" strSql.Append(\"insert into " + table.Name + "(\");"); code.Append(" strSql.Append(\""); foreach (Model.Field field in fields) { //把非标识且无默认值的字段排成如下格式:Id,Name,Value if (!field.IsIdentifier && (field == keyRow || string.IsNullOrEmpty(field.DefaultValue))) { code.Append(field.FieldName + ","); } } code.Remove(code.Length - 1, 1); //删除最后一个逗号 code.Append(")\");\n"); code.AppendLine(" strSql.Append(\" values (\");"); code.Append(" strSql.Append(\""); foreach (Model.Field model in fields) { //把非标识且无默认值的字段排成如下格式:@Id,@Name,@Value if (!model.IsIdentifier && (model == keyRow || string.IsNullOrEmpty(model.DefaultValue))) { code.Append("@" + model.FieldName + ","); } } code.Remove(code.Length - 1, 1); code.Append(")\");\n"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" int rowsAffected;"); break; default: break; } code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters = {"); foreach (Model.Field field in fields) { if (!field.IsIdentifier && (field == keyRow || string.IsNullOrEmpty(field.DefaultValue))) { if (!DBUtility.SqlHelper.IsCharClassType(field)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "),"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "," + field.FieldLength + "),"); } } } code.Remove(code.Length - 3, 1); //删除最后一个逗号 code.AppendLine(" };"); int i = 0; foreach (Model.Field field in fields) { if (!field.IsIdentifier && (field == keyRow || string.IsNullOrEmpty(field.DefaultValue))) { if (field.AllowNull) { if (field.FieldType == Model.DataType.uniqueidentifierType && string.IsNullOrEmpty(field.DefaultValue)) { code.AppendLine(""); code.AppendLine(" if (model." + field.FieldName + " != Guid.Empty)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + field.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (DBUtility.SqlHelper.IsDataTimeClassType(field)) { code.AppendLine(""); code.AppendLine(" if (model." + field.FieldName + " != DateTime.MinValue)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + field.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (DBUtility.SqlHelper.IsStringClassType(field)) { code.AppendLine(""); code.AppendLine(" if (model." + field.FieldName + " != null)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + field.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + field.FieldName + ";"); } } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + field.FieldName + ";"); } i++; } } switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".ExecuteSql(" + style.ConnVariable + ", strSql.ToString(), parameters);"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_Add\", parameters, out rowsAffected);"); code.AppendLine(""); code.AppendLine(" return rowsAffected > 0;"); break; default: break; } code.AppendLine(" }"); #endregion code.AppendLine(""); #region 更新一条数据 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 更新一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" public bool Update(" + CodeHelper.GetModelClass(table, style) + " model)"); code.AppendLine(" {"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" StringBuilder strSql = new StringBuilder();"); code.AppendLine(" strSql.Append(\"update " + table.Name + " set \");"); foreach (Model.Field model in fields) { if (model != keyRow) { code.AppendLine(" strSql.Append(\"" + model.FieldName + "=@" + model.FieldName + ",\");"); } } code.Remove(code.Length - 6, 1); code.AppendLine(" strSql.Append(\" where " + keyRow.FieldName + "=@" + keyRow.FieldName + "\");"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" int rowsAffected;"); break; default: break; } code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters = {"); foreach (Model.Field field in fields) { //不是标识列的放在前面 if (!field.IsIdentifier) { if (!DBUtility.SqlHelper.IsCharClassType(field)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "),"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "," + field.FieldLength + "),"); } } } foreach (Model.Field field in fields) { //标识列放在后面 if (field.IsIdentifier) { if (!DBUtility.SqlHelper.IsCharClassType(field)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "),"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + field.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(field.FieldType, field.FieldSize) + "," + field.FieldLength + "),"); } } } code.Remove(code.Length - 3, 1); //删除最后一个逗号,并把换行取消 code.AppendLine(" };"); i = 0; foreach (Model.Field model in fields) { //不是标识列放在前面 if (!model.IsIdentifier) { if (model.AllowNull && string.IsNullOrEmpty(model.DefaultValue)) { if (model.FieldType == Model.DataType.uniqueidentifierType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != Guid.Empty)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (model.FieldType == Model.DataType.datetimeType || model.FieldType == Model.DataType.smalldatetimeType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != DateTime.MinValue)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (model.FieldType == Model.DataType.charType || model.FieldType == Model.DataType.ncharType || model.FieldType == Model.DataType.ntextType || model.FieldType == Model.DataType.nvarcharType || model.FieldType == Model.DataType.textType || model.FieldType == Model.DataType.varcharType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != null)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); } } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); } i++; } } foreach (Model.Field model in fields) { //标识列放在后面 if (model.IsIdentifier) { if (model.AllowNull && string.IsNullOrEmpty(model.DefaultValue)) { if (model.FieldType == Model.DataType.uniqueidentifierType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != Guid.Empty)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (model.FieldType == Model.DataType.datetimeType || model.FieldType == Model.DataType.smalldatetimeType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != DateTime.MinValue)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else if (model.FieldType == Model.DataType.charType || model.FieldType == Model.DataType.ncharType || model.FieldType == Model.DataType.ntextType || model.FieldType == Model.DataType.nvarcharType || model.FieldType == Model.DataType.textType || model.FieldType == Model.DataType.varcharType) { code.AppendLine(""); code.AppendLine(" if (model." + model.FieldName + " != null)"); code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); code.AppendLine(" else"); code.AppendLine(" parameters[" + i.ToString() + "].Value = DBNull.Value;"); code.AppendLine(""); } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); } } else { code.AppendLine(" parameters[" + i.ToString() + "].Value = model." + model.FieldName + ";"); } i++; } } code.AppendLine(""); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".ExecuteSql(" + style.ConnVariable + ", strSql.ToString(), parameters) > 0;"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_Update\", parameters, out rowsAffected);"); code.AppendLine(" return rowsAffected > 0;"); break; default: break; } code.AppendLine(" }"); #endregion code.AppendLine(""); #region 除一条数据 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 删除一条数据"); code.AppendLine(" /// </summary>"); code.AppendLine(" public bool Delete(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(keyRow.FieldType) + " " + keyRow.FieldName + ")"); code.AppendLine(" {"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" StringBuilder strSql = new StringBuilder();"); code.AppendLine(" strSql.Append(\"delete " + table.Name + " \");"); code.AppendLine(" strSql.Append(\" where " + keyRow.FieldName + "=@" + keyRow.FieldName + "\");"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" int rowsAffected;"); break; default: break; } code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters = {"); if (!DBUtility.SqlHelper.IsCharClassType(keyRow)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + ")};"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + "," + keyRow.FieldLength + ")};"); } code.AppendLine(" parameters[0].Value = " + keyRow.FieldName + ";"); code.AppendLine(""); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".ExecuteSql(" + style.ConnVariable + ", strSql.ToString(), parameters) > 0;"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_Delete\", parameters, out rowsAffected);"); code.AppendLine(" return rowsAffected > 0;"); break; default: break; } code.AppendLine(" }"); #endregion code.AppendLine(""); if (DBUtility.SqlHelper.IsIntClassType(keyRow)) { #region 得到最大ID code.AppendLine(" /// <summary>"); code.AppendLine(" /// 得到最大ID"); code.AppendLine(" /// </summary>"); code.AppendLine(" public int GetMaxId()"); code.AppendLine(" {"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".GetMaxID(" + style.ConnVariable + ", \"" + keyRow.FieldName + "\", \"" + table.Name + "\");"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" int rowsAffected;"); code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters ={ };"); code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_GetMaxId\", parameters, out rowsAffected);"); break; default: break; } code.AppendLine(" }"); #endregion code.AppendLine(""); } #region 是否存在该记录 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 是否存在该记录"); code.AppendLine(" /// </summary>"); code.AppendLine(" public bool Exists(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(keyRow.FieldType) + " " + keyRow.FieldName + ")"); code.AppendLine(" {"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" StringBuilder strSql = new StringBuilder();"); code.AppendLine(" strSql.Append(\"select count(1) from " + table.Name + "\");"); code.AppendLine(" strSql.Append(\" where " + keyRow.FieldName + "= @" + keyRow.FieldName + "\");"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" int rowsAffected;"); break; default: break; } code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters = {"); if (!DBUtility.SqlHelper.IsCharClassType(keyRow)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + ")};"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + "," + keyRow.FieldLength + ")};"); } code.AppendLine(" parameters[0].Value = " + keyRow.FieldName + ";"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".Exists(" + style.ConnVariable + ", strSql.ToString(), parameters);"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" return " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_Exists\", parameters, out rowsAffected) == 1;"); break; default: break; } code.AppendLine(" }"); #endregion code.AppendLine(""); #region 得到一个对象实体 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 得到一个对象实体"); code.AppendLine(" /// </summary>"); code.AppendLine(" public " + CodeHelper.GetModelClass(table, style) + " GetModel(" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(keyRow.FieldType) + " " + keyRow.FieldName + ")"); code.AppendLine(" {"); if (style.DALFrame == Model.CodeStyle.DALFrames.SQL) { code.AppendLine(" StringBuilder strSql = new StringBuilder();"); code.AppendLine(" strSql.Append(\"select * from " + table.Name + " \");"); code.AppendLine(" strSql.Append(\" where " + keyRow.FieldName + "=@" + keyRow.FieldName + "\");"); } code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters = {"); if (!DBUtility.SqlHelper.IsCharClassType(keyRow)) { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + ")};"); } else { code.AppendLine(" new " + Model.Database.GetParameterType(type) + "(\"@" + keyRow.FieldName + "\", " + CodeUtility.TypeConverter.DataTypeToSQLTypeString(keyRow.FieldType, keyRow.FieldSize) + "," + keyRow.FieldLength + ")};"); } code.AppendLine(" parameters[0].Value = " + keyRow.FieldName + ";"); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: code.AppendLine(" DataSet ds = " + Model.Database.GetHelperClass(type) + ".Query(" + style.ConnVariable + ", strSql.ToString(), parameters);"); break; case Model.CodeStyle.DALFrames.SP: code.AppendLine(" DataSet ds = " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_GetModel\", parameters, \"ds\");"); break; default: break; } code.AppendLine(" if (ds.Tables[0].Rows.Count > 0)"); code.AppendLine(" {"); code.AppendLine(" DataRow r = ds.Tables[0].Rows[0];"); code.AppendLine(" return GetModel(r);"); code.AppendLine(" }"); code.AppendLine(" else"); code.AppendLine(" {"); code.AppendLine(" return null;"); code.AppendLine(" }"); code.AppendLine(" }"); #endregion code.AppendLine(""); switch (style.DALFrame) { case Model.CodeStyle.DALFrames.SQL: #region Sql获取泛型数据列表 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 获取泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" public List<" + CodeHelper.GetModelClass(table, style) + "> GetList()"); code.AppendLine(" {"); code.AppendLine(" StringBuilder strSql = new StringBuilder(\"select * from " + table.Name + "\");"); code.AppendLine(" DataSet ds = " + Model.Database.GetHelperClass(type) + ".Query(" + style.ConnVariable + ", strSql.ToString());"); code.AppendLine(" return GetList(ds);"); code.AppendLine(" }"); #endregion code.AppendLine(""); break; case Model.CodeStyle.DALFrames.SP: #region 存储过程获取泛型数据列表 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 获取泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" public List<" + CodeHelper.GetModelClass(table, style) + "> GetList()"); code.AppendLine(" {"); code.AppendLine(" " + Model.Database.GetParameterType(type) + "[] parameters ={ };"); code.AppendLine(" DataSet ds = " + Model.Database.GetHelperClass(type) + ".RunProcedure(" + style.ConnVariable + ", \"sp_" + table.Name + "_GetAllList\", parameters, \"ds\");"); code.AppendLine(" return GetList(ds);"); code.AppendLine(" }"); #endregion code.AppendLine(""); break; default: break; } #region 分页获取泛型数据列表 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 分页获取泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" public List<" + CodeHelper.GetModelClass(table, style) + "> GetList(int pageSize, int pageIndex, string fldSort, bool sort, string strCondition, out int count)"); code.AppendLine(" {"); code.AppendLine(" DataSet ds = " + Model.Database.GetHelperClass(type) + ".PageList(" + style.ConnVariable + ", \"" + table.Name + "\", pageSize, pageIndex, fldSort, sort, strCondition, out count);"); code.AppendLine(" return GetList(ds);"); code.AppendLine(" }"); #endregion code.AppendLine(" #endregion"); code.AppendLine(""); #region 由一行数据得到一个实体 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 由一行数据得到一个实体"); code.AppendLine(" /// </summary>"); code.AppendLine(" private " + CodeHelper.GetModelClass(table, style) + " GetModel(DataRow r)"); code.AppendLine(" {"); code.AppendLine(" " + CodeHelper.GetModelClass(table, style) + " model = new " + CodeHelper.GetModelClass(table, style) + "();"); foreach (Model.Field model in fields) { code.AppendLine(" model." + model.FieldName + " = DBUtility.ObjectHelper." + CodeUtility.TypeConverter.DataTypeToCSharpMethod(model.FieldType) + "(r[\"" + model.FieldName + "\"]);"); } code.AppendLine(" return model;"); code.AppendLine(" }"); #endregion code.AppendLine(""); #region 由数据集得到泛型数据列表 code.AppendLine(" /// <summary>"); code.AppendLine(" /// 由数据集得到泛型数据列表"); code.AppendLine(" /// </summary>"); code.AppendLine(" private List<" + CodeHelper.GetModelClass(table, style) + "> GetList(DataSet ds)"); code.AppendLine(" {"); code.AppendLine(" List<" + CodeHelper.GetModelClass(table, style) + "> l = new List<" + CodeHelper.GetModelClass(table, style) + ">();"); code.AppendLine(" foreach (DataRow r in ds.Tables[0].Rows)"); code.AppendLine(" {"); code.AppendLine(" l.Add(GetModel(r));"); code.AppendLine(" }"); code.AppendLine(" return l;"); code.AppendLine(" }"); #endregion code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }
/// <summary> /// 生成Model实体层代码(Internal) /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetInternalModelCode(Model.Table table, Model.CodeStyle style) { StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); Head(code, style); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 实体类 {0},此类请勿动,以方便表字段更改时重新生成覆盖", table.Name); AppendFormatLine(code, 1, "/// </summary>"); AppendFormatLine(code, 1, "[Serializable]"); AppendFormatLine(code, 1, "public partial class {0} : ICloneable", table.Name); AppendFormatLine(code, 1, "{"); #region ---------- 空构造函数 ---------- AppendFormatLine(code, 2, "public {0}()", table.Name); AppendFormatLine(code, 2, "{ }"); #endregion code.AppendLine(); #region ---------- 构造函数 ---------- AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 构造函数 {0}", table.Name); AppendFormatLine(code, 2, "/// </summary>"); foreach (Model.Field field in table.Fields) { AppendFormatLine(code, 2, "/// <param name=\"{0}\">{1}</param>", field.CamelName, field.FieldDescn); } AppendFormat(code, 2, "public {0}(", table.Name); foreach (Model.Field field in table.Fields) { code.Append(string.Format("{0} {1}, ", field.CSharpType, field.CamelName)); //参数列表 } code.Remove(code.Length - 2, 2); code.Append(")"); code.AppendLine(); AppendFormatLine(code, 2, "{"); foreach (Model.Field field in table.Fields) { AppendFormatLine(code, 3, "this.{0} = {1};", field.FieldName, field.CamelName); } AppendFormatLine(code, 2, "}"); #endregion code.AppendLine(); AppendFormatLine(code, 2, "#region 实体属性"); code.AppendLine(); switch (style.ModelStyle) { case Model.CodeStyle.ModelStyles.CS2: GetCS2Model(table, code); break; case Model.CodeStyle.ModelStyles.CS3: case Model.CodeStyle.ModelStyles.MVC2: GetCS3OrMvc2Model(table, code, style); break; default: break; } AppendFormatLine(code, 2, "#endregion"); code.AppendLine(); //实现ICloneable接口 AppendFormatLine(code, 2, "#region ICloneable 成员"); code.AppendLine(); AppendFormatLine(code, 2, "public object Clone()"); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "return this.MemberwiseClone();"); AppendFormatLine(code, 2, "}"); code.AppendLine(); AppendFormatLine(code, 2, "#endregion"); code.AppendLine(); //重写Equals方法 AppendFormatLine(code, 2, "public override bool Equals(object obj)"); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "{0}.{1} model = obj as {0}.{1};", style.ModelNameSpace, table.Name); AppendFormat(code, 3, "if (model != null"); foreach (Model.Field field in table.ConditionRows) { AppendFormat(code, 0, " && model.{0} == this.{0}", field.FieldName); } AppendFormat(code, 0, ")\r\n"); AppendFormatLine(code, 4, "return true;"); code.AppendLine(); AppendFormatLine(code, 3, "return false;"); AppendFormatLine(code, 2, "}"); code.AppendLine(); //重写GetHashCode方法 AppendFormatLine(code, 2, "public override int GetHashCode()"); AppendFormatLine(code, 2, "{"); AppendFormat(code, 3, "return "); foreach (Model.Field field in table.ConditionRows) { AppendFormat(code, 0, "{0}.GetHashCode() ^ ", field.FieldName); } code.Remove(code.Length - 3, 3); AppendFormat(code, 0, ";\r\n"); AppendFormatLine(code, 2, "}"); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成Model实体层代码 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetModelCode(Model.Table table, Model.CodeStyle style) { List <Model.Field> l = table.Fields; StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); AppendFormatLine(code, 0, "using System;"); code.AppendLine(); AppendFormatLine(code, 0, "namespace {0}", style.ModelNameSpace); AppendFormatLine(code, 0, "{"); AppendFormatLine(code, 1, "/// <summary>"); AppendFormatLine(code, 1, "/// 实体类 {0}", table.Name); AppendFormatLine(code, 1, "/// </summary>"); AppendFormatLine(code, 1, "[Serializable]"); AppendFormatLine(code, 1, "public class {0} : ICloneable", table.Name); AppendFormatLine(code, 1, "{"); #region ---------- 空构造函数 ---------- AppendFormatLine(code, 2, "public {0}()", table.Name); AppendFormatLine(code, 2, "{ }"); #endregion code.AppendLine(); #region ---------- 构造函数 ---------- AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// 构造函数 {0}", table.Name); AppendFormatLine(code, 2, "/// </summary>"); foreach (Model.Field field in table.Fields) { AppendFormatLine(code, 2, "/// <param name=\"{0}\">{1}</param>", field.ConstructorsParameter, field.FieldDescn); } AppendFormat(code, 2, "public {0}(", table.Name); foreach (Model.Field field in table.Fields) { code.Append(string.Format("{0} {1}, ", CodeUtility.TypeConverter.DataTypeToCSharpTypeString(field.DbType), field.ConstructorsParameter)); //参数列表 } code.Remove(code.Length - 2, 2); code.Append(")"); code.AppendLine(); AppendFormatLine(code, 2, "{"); foreach (Model.Field field in table.Fields) { AppendFormatLine(code, 3, "{0} = {1};", field.PrivateProperty, field.ConstructorsParameter); //赋值 } AppendFormatLine(code, 2, "}"); #endregion code.AppendLine(); AppendFormatLine(code, 2, "#region Model"); code.AppendLine(); foreach (Model.Field model in l) { AppendFormatLine(code, 2, "private {0} {1};", CodeUtility.TypeConverter.DataTypeToCSharpTypeString(model.DbType), model.PrivateProperty); } foreach (Model.Field model in l) { AppendFormatLine(code, 2, "/// <summary>"); AppendFormatLine(code, 2, "/// {0}", model.FieldDescn); AppendFormatLine(code, 2, "/// </summary>"); AppendFormatLine(code, 2, "public {0} {1}", CodeUtility.TypeConverter.DataTypeToCSharpTypeString(model.DbType), model.FieldName); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "set {{ {0} = value; }}", model.PrivateProperty); AppendFormatLine(code, 3, "get {{ return {0}; }}", model.PrivateProperty); AppendFormatLine(code, 2, "}"); } code.AppendLine(); AppendFormatLine(code, 2, "#endregion"); code.AppendLine(); AppendFormatLine(code, 2, "#region ICloneable 成员"); code.AppendLine(); AppendFormatLine(code, 2, "public object Clone()"); AppendFormatLine(code, 2, "{"); AppendFormatLine(code, 3, "return this.MemberwiseClone();"); AppendFormatLine(code, 2, "}"); code.AppendLine(); AppendFormatLine(code, 2, "#endregion"); AppendFormatLine(code, 1, "}"); AppendFormatLine(code, 0, "}"); return(code.ToString()); }
/// <summary> /// 生成Web用户控件后台代码 /// </summary> /// <param name="l"></param> /// <returns></returns> public static string GetWebUserControlCsCode(Model.Table table, Model.CodeStyle style) { List <Model.Field> l = table.Fields; bool HasIdentifierRow; Model.Field IdentifierRow = CodeHelper.GetKeyField(table, out HasIdentifierRow); StringBuilder code = new StringBuilder(CommonCode.GetCSharpCopyrightCode()); code.AppendLine("using System;"); code.AppendLine("using System.Data;"); code.AppendLine("using System.Configuration;"); code.AppendLine("using System.Collections;"); code.AppendLine("using System.Web;"); code.AppendLine("using System.Web.Security;"); code.AppendLine("using System.Web.UI;"); code.AppendLine("using System.Web.UI.WebControls;"); code.AppendLine("using System.Web.UI.WebControls.WebParts;"); code.AppendLine("using System.Web.UI.HtmlControls;"); code.AppendLine("using System.Collections.Generic;"); code.AppendLine(""); code.AppendLine("public partial class Controls_" + style.DotAfterNamespace.Replace(".", "") + table.Name + "ListControl : System.Web.UI.UserControl"); code.AppendLine("{"); code.AppendLine(" public event RepeaterCommandEventHandler ItemCommand;"); code.AppendLine(" public List<" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + "> Selected"); code.AppendLine(" {"); code.AppendLine(" get"); code.AppendLine(" {"); code.AppendLine(" List<" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + "> l = new List<" + CodeUtility.TypeConverter.DataTypeToCSharpTypeString(IdentifierRow.FieldType) + ">();"); code.AppendLine(" foreach (RepeaterItem item in rpt" + table.Name + ".Items)"); code.AppendLine(" {"); code.AppendLine(" CheckBox cb = item.FindControl(\"chkChoose\") as CheckBox;"); code.AppendLine(" if (cb != null && cb.Checked)"); code.AppendLine(" {"); code.AppendLine(" HiddenField fld = item.FindControl(\"hf" + table.Name + "\") as HiddenField;"); code.AppendLine(" if (fld != null)"); code.AppendLine(" {"); if (IdentifierRow.FieldType == Model.DataType.uniqueidentifierType) { code.AppendLine(" Guid id = new Guid(fld.Value);"); } else if (IdentifierRow.FieldType == Model.DataType.bigintType || IdentifierRow.FieldType == Model.DataType.intType || IdentifierRow.FieldType == Model.DataType.smallintType || IdentifierRow.FieldType == Model.DataType.tinyintType) { code.AppendLine(" int id = Convert.ToInt32(fld.Value);"); } else { code.AppendLine(" string id = fld.Value;"); } code.AppendLine(" l.Add(id);"); code.AppendLine(" }"); code.AppendLine(" }"); code.AppendLine(" }"); code.AppendLine(" return l;"); code.AppendLine(" }"); code.AppendLine(" }"); code.AppendLine(""); code.AppendLine(" protected void Page_Load(object sender, EventArgs e)"); code.AppendLine(" {"); code.AppendLine(" }"); code.AppendLine(""); code.AppendLine(" public void Bind(List<" + CodeHelper.GetModelClass(table, style) + "> l)"); code.AppendLine(" {"); code.AppendLine(" rpt" + table.Name + ".DataSource = l;"); code.AppendLine(" rpt" + table.Name + ".DataBind();"); code.AppendLine(" }"); code.AppendLine(""); code.AppendLine(" protected void rpt" + table.Name + "_ItemCommand(object source, RepeaterCommandEventArgs e)"); code.AppendLine(" {"); code.AppendLine(" if (ItemCommand != null)"); code.AppendLine(" ItemCommand(source, e);"); code.AppendLine(" }"); code.AppendLine("}"); return(code.ToString()); }