示例#1
0
        /// <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());
        }
示例#4
0
        /// <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());
        }
示例#6
0
        /// <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());
        }
示例#7
0
        /// <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());
        }
示例#8
0
        /// <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());
        }
示例#9
0
        /// <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());
        }
示例#10
0
        /// <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());
        }
示例#11
0
        /// <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());
        }
示例#12
0
        /// <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());
        }
示例#13
0
        /// <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());
        }
示例#14
0
 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));
 }
示例#15
0
        /// <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());
        }
示例#16
0
        /// <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());
        }
示例#17
0
        /// <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());
        }
示例#18
0
        /// <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());
        }