Пример #1
0
        public static string GetTables(Model.Database.DatabaseType type)
        {
            StringBuilder strSql = new StringBuilder();

            strSql.Append("SELECT d.name N'TableName',a.colorder N'FieldNumber',a.name N'FieldName', ");
            strSql.Append("(case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then '1'else '0' end) N'IsIdentifier',");
            strSql.Append("(case when (SELECT count(*) ");
            strSql.Append(" FROM sysobjects WHERE (name in (SELECT name FROM sysindexes ");
            strSql.Append(" WHERE (id = a.id) AND (indid in (SELECT indid FROM sysindexkeys");
            strSql.Append(" WHERE (id = a.id) AND (colid in (SELECT colid FROM syscolumns");
            strSql.Append(" WHERE (id = a.id) AND (name = a.name))))))) AND (xtype = 'PK'))>0 ");
            strSql.Append(" then '1' else '0' end) N'IsKeyField', b.name N'FieldType',a.length N'FieldSize', ");
            strSql.Append(" COLUMNPROPERTY(a.id,a.name,'PRECISION') as N'FieldLength', ");
            strSql.Append(" isnull(COLUMNPROPERTY(a.id,a.name,'Scale'),0) as N'DecimalDigits', ");
            strSql.Append(" (case when a.isnullable=1 then '1'else '0' end) N'AllowNull', isnull(e.text,'') N'DefaultValue', ");
            strSql.Append(" isnull(g.[value],'') AS N'FieldDescn' ");
            strSql.Append(" FROM syscolumns a left join systypes b on a.xtype=b.xusertype inner join sysobjects d ");
            strSql.Append(" on a.id=d.id and d.xtype='U' and d.name<>'dtproperties' left join syscomments e on a.cdefault=e.id ");

            if (type == Model.Database.DatabaseType.Sql2005)
            {
                strSql.Append(" left join sys.extended_properties g on a.id=g.major_id AND a.colid = g.minor_id order by object_name(a.id),a.colorder");
            }
            else
            {
                strSql.Append(" left join sysproperties g on a.id=g.id AND a.colid = g.smallid order by object_name(a.id),a.colorder ");
            }
            return(strSql.ToString());
        }
Пример #2
0
        public FormCodeCreate(Model.Database.DatabaseType dbType, string dbName, Model.Table table)
        {
            InitializeComponent();

            //如果是ACCESS数据库,不允许使用缓存依赖,不能使用存储过程方式
            if (dbType == Model.Database.DatabaseType.Access)
            {
                cobCacheFrame.Items.Remove(cobCacheFrame.Items[2]);
                cobDALFrame.Enabled = false;
            }
            _dbType = dbType;

            tcCodes.Controls.Clear();
            cobCodeFrame.SelectedIndex  = 0;
            cobCacheFrame.SelectedIndex = 0;
            cobDALFrame.SelectedIndex   = 0;
            _dbName = dbName;
            _table  = table;

            TextEditor.SetStyle(txtModel, "C#");
            TextEditor.SetStyle(txtIDAL, "C#");
            TextEditor.SetStyle(txtDBUtility, "C#");
            TextEditor.SetStyle(txtDALFactory, "C#");
            TextEditor.SetStyle(txtDAL, "C#");
            TextEditor.SetStyle(txtBLL, "C#");
            TextEditor.SetStyle(txtUserControl, "HTML");
            TextEditor.SetStyle(txtUserControlCs, "C#");

            TextEditor.SetStyle(txtICacheDependency, "C#");
            TextEditor.SetStyle(txtTableDependency, "C#");
            TextEditor.SetStyle(txtTableCacheDependency, "C#");
            TextEditor.SetStyle(txtDependencyAccess, "C#");
            TextEditor.SetStyle(txtDependencyFacade, "C#");
        }
Пример #3
0
        public FormCodeOutput(Model.Database database)
        {
            InitializeComponent();
            cobCodeFrame.SelectedIndex  = 0;
            cobCacheFrame.SelectedIndex = 0;
            cobDALFrame.SelectedIndex   = 0;

            //关于注册
            //CheckForIllegalCrossThreadCalls = false;
            //Thread threadCheckRegister = new Thread(CheckRegister);
            //threadCheckRegister.Start();

            _dbtype = database.Type;
            _dbName = database.DatabaseName;
            _tables = database.Tables;

            //如果是Access数据库,不能使用缓存依赖,不能使用存储过程,不能生成存储过程
            if (_dbtype == Model.Database.DatabaseType.Access)
            {
                cobCacheFrame.Items.Remove(cobCacheFrame.Items[2]);
                cobDALFrame.Enabled = false;
                btnOutputSp.Enabled = false;
            }
            foreach (Model.Table table in _tables)
            {
                lstTables.Items.Add(table.Name);
            }
        }
Пример #4
0
        public Model.Database GetSchema(string connectionString, Model.Database.DatabaseType type)
        {
            Model.Database database = new Model.Database();
            database.ConnectionString = connectionString;
            database.Type             = type;

            using (SqlConnection connection = new SqlConnection())
            {
                try
                {
                    DBUtility.DBHelper dbHelper = new DBUtility.DBHelper(DBUtility.DBHelper.DatabaseTypes.Sql, database.ConnectionString);

                    DataSet ds = dbHelper.ExecuteQuery(CommandType.Text,
                                                       GetSql(database.Type, SchemeHelper.SchemaType.Table), null);
                    database.Tables = GetSQLTableList(ds);

                    ds = dbHelper.ExecuteQuery(CommandType.Text,
                                               GetSql(database.Type, SchemeHelper.SchemaType.View), null);
                    database.Views = GetSQLTableList(ds);

                    ds = dbHelper.ExecuteQuery(CommandType.Text, SqlForGetStoreProcedures, null);
                    database.StoreProcedures = GetSQLStoreProcedureList(ds);

                    return(database);
                }
                catch
                {
                    return(null);
                }
            }
        }
Пример #5
0
        public Model.Database GetSchema(string connectionString, Model.Database.DatabaseType type)
        {
            Model.Database database = new Model.Database();
            database.ConnectionString = connectionString;
            database.Type             = type;

            //得到获取MySql结构的语句
            string dbName;
            string connStr   = database.ConnectionString;
            Match  mDatabase = Regex.Match(connStr, @"Database=(?<Database>[^\;]*);");

            if (mDatabase.Success)
            {
                dbName  = mDatabase.Groups["Database"].Value;
                connStr = connStr.Replace(string.Format("Database={0};", dbName), "Database=information_schema;");
            }
            else
            {
                return(null);
            }

            DBUtility.DBHelper dbHelper = new DBUtility.DBHelper(DBUtility.DBHelper.DatabaseTypes.MySql, connStr);

            // 获取表
            DataSet dsTables = dbHelper.ExecuteQuery(CommandType.Text,
                                                     string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='BASE TABLE'", dbName),
                                                     null);

            foreach (DataRow rTable in dsTables.Tables[0].Rows)
            {
                Model.Table table = GetTable(dbHelper, dbName, rTable);
                table.Fields.Sort();
                database.Tables.Add(table);
            }

            // 获取视图
            DataSet dsViews = dbHelper.ExecuteQuery(CommandType.Text,
                                                    string.Format("select distinct TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA='{0}' and TABLE_TYPE='VIEW'", dbName),
                                                    null);

            foreach (DataRow rView in dsViews.Tables[0].Rows)
            {
                Model.Table view = GetTable(dbHelper, dbName, rView);
                view.Fields.Sort();
                database.Views.Add(view);
            }

            // 获取存储过程
            DataSet dsStoreProcedure = dbHelper.ExecuteQuery(CommandType.Text,
                                                             string.Format("select distinct SPECIFIC_NAME from ROUTINES where ROUTINE_SCHEMA='{0}'", dbName),
                                                             null);

            foreach (DataRow r in dsStoreProcedure.Tables[0].Rows)
            {
                database.StoreProcedures.Add(r[0].ToString());
            }

            return(database);
        }
Пример #6
0
 public static void CreateDALFile(Model.Database.DatabaseType dbType, List <Model.Table> tables, Model.CodeStyle style, string path)
 {
     foreach (Model.Table table in tables)
     {
         string filePath = path + "\\" + style.AfterNamespaceDot + table.Name + ".cs";
         CodeHelper.WriteUTF8File(filePath, Codes.DALCode.GetDALCode(dbType, table, style));
     }
     CodeHelper.WriteUTF8File(path + "\\" + style.AfterNamespaceDot + "Config.cs", Codes.DALCode.GetDALConfigCode(dbType, style));
 }
Пример #7
0
 public static void CreateBLLFile(Model.Database.DatabaseType dbType, List <Model.Table> tables, Model.CodeStyle style, string path)
 {
     foreach (Model.Table table in tables)
     {
         List <Model.Field> l        = table.Fields;
         string             filePath = path + "\\" + style.AfterNamespaceDot + table.Name + ".cs";
         CodeHelper.WriteUTF8File(filePath, Codes.BLLCode.GetBLLCode(dbType, table, style));
     }
     if (style.CacheFrame != Model.CodeStyle.CacheFrames.None)
     {
         CodeHelper.WriteUTF8File(path + "\\Caches.cs", Codes.BLLCode.GetCachesCode(style));
     }
 }
Пример #8
0
        public Model.Database GetSchema(string connectionString, Model.Database.DatabaseType type)
        {
            Model.Database database = new Model.Database();
            database.ConnectionString = connectionString;
            database.Type             = type;

            try
            {
                //获取所有表
                DataTable dtAllTable = GetDbSchema(database.ConnectionString, OleDbSchemaGuid.Tables, new object[] { null, null, null, "table" });
                foreach (DataRow rt in dtAllTable.Rows)
                {
                    Model.Table tb = new Model.Table();
                    tb.Name = rt["TABLE_NAME"].ToString();
                    DataTable dtColumns = GetDbSchema(database.ConnectionString, OleDbSchemaGuid.Columns, new object[] { null, null, tb.Name });
                    foreach (DataRow rc in dtColumns.Rows)
                    {
                        tb.Fields.Add(GetField(database.ConnectionString, tb.Name, rc));
                    }
                    tb.Fields.Sort();
                    database.Tables.Add(tb);
                }

                //获取所有视图
                DataTable dtAllView = GetDbSchema(database.ConnectionString, OleDbSchemaGuid.Views, null);
                foreach (DataRow rv in dtAllView.Rows)
                {
                    Model.Table tb = new Model.Table();
                    tb.Name = rv["TABLE_NAME"].ToString();
                    DataTable dtColumns = GetDbSchema(database.ConnectionString, OleDbSchemaGuid.Columns, new object[] { null, null, tb.Name });
                    foreach (DataRow rc in dtColumns.Rows)
                    {
                        tb.Fields.Add(GetField(database.ConnectionString, tb.Name, rc));
                    }
                    tb.Fields.Sort();
                    database.Views.Add(tb);
                }

                //获取所有存储过程
                DataTable dtAllStoreProcedure = GetDbSchema(database.ConnectionString, OleDbSchemaGuid.Procedures, null);
                foreach (DataRow rsp in dtAllStoreProcedure.Rows)
                {
                    database.StoreProcedures.Add(rsp["PROCEDURE_NAME"].ToString());
                }
                return(database);
            }
            catch
            {
                return(null);
            }
        }
Пример #9
0
        public static string GetDALConfigCode(Model.Database.DatabaseType type, 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.Configuration;");
            code.AppendLine();
            code.AppendLine("namespace " + style.BeforeNamespaceDot + Model.Database.GetDALNamespace(type) + style.DotAfterNamespace);
            code.AppendLine("{");
            code.AppendLine("    public class Config");
            code.AppendLine("    {");
            code.AppendLine("        public static string Connection = ConfigurationManager.ConnectionStrings[\"ConnectionString\"].ConnectionString;");
            code.AppendLine("    }");
            code.AppendLine("}");
            return(code.ToString());
        }
Пример #10
0
 public Schema(string connectionString, Model.Database.DatabaseType type)
 {
     this.connectionString = connectionString;
     Type = type;
 }
Пример #11
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());
        }
Пример #12
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());
        }