CodeSmith自动生成实体类文件(数据库中所有表的实体类)!

    技术2022-05-11  71

    此模版需要执行2次

    第1次执行产生.cs文件,然后报“此文件被进程占用”的提示,算是一个Bug吧,还在改进

    第2次执行产生get()和set()

    <% @ CodeTemplate Language = " C# "  TargetLanguage = " C# "  Inherits = " OutputFileCodeTemplate "  Description = " Template description here. "   %> <% @ Assembly Name = " SchemaExplorer "   %> <% @ Assembly Name = " System.Design "   %> <% @ Assembly Name = " CodeSmith.BaseTemplates "   %> <% @ Assembly Name = " CodeSmith.CustomProperties "   %> <% @ Import Namespace = " CodeSmith.BaseTemplates "   %> <% @ Import Namespace = " CodeSmith.CustomProperties "   %> <% @ Import Namespace = " SchemaExplorer "   %> <% @ Import Namespace = " System.IO "   %> <% @ Import Namespace = " System.Text.RegularExpressions "   %> <% @ Import Namespace = " CodeSmith.CustomProperties "   %> <% @ Property Name = " SourceData "  Type = " SchemaExplorer.DatabaseSchema "  Optional = " False "  Category = " Context "  Description = ""   %> <% @ Property Name = " Output "  Type = " System.String "  Default = " D:/MyModel "  Optional = " False "  Category = " Context "  Description = ""   %> <%     Render(); %> < script runat = " template " > // Table List public  TableSchemaCollection GetTableCollection(DatabaseSchema dataBase) {    TableSchemaCollection tables = new TableSchemaCollection(dataBase.Tables);    return tables;} // Column Type public   string  GetType(ColumnSchema column) {    if (column.Name.EndsWith("TypeCode")) return column.Name;        switch (column.DataType)    {        case DbType.AnsiString: return "string";        case DbType.AnsiStringFixedLength: return "string";        case DbType.Binary: return "byte[]";        case DbType.Boolean: return "bool";        case DbType.Byte: return "int";        case DbType.Currency: return "decimal";        case DbType.Date: return "DateTime";        case DbType.DateTime: return "DateTime";        case DbType.Decimal: return "decimal";        case DbType.Double: return "double";        case DbType.Guid: return "Guid";        case DbType.Int16: return "short";        case DbType.Int32: return "int";        case DbType.Int64: return "long";        case DbType.Object: return "object";        case DbType.SByte: return "sbyte";        case DbType.Single: return "float";        case DbType.String: return "string";        case DbType.StringFixedLength: return "string";        case DbType.Time: return "TimeSpan";        case DbType.UInt16: return "ushort";        case DbType.UInt32: return "uint";        case DbType.UInt64: return "ulong";        case DbType.VarNumeric: return "decimal";        default:        {            return "__UNKNOWN__" + column.NativeType;        }    }} // Go public   void  Render() {    TableSchemaCollection tables = GetTableCollection(SourceData);    foreach(TableSchema dt in tables)    {        if(Directory.Exists(Output) == false)        {            Directory.CreateDirectory(Output);        }        string strFileName = Output + "/" + dt.Name.ToString().Replace("dbo.",""+ ".cs";        if(File.Exists(strFileName) == false)        {            File.Create(strFileName);        }    }        foreach(TableSchema dt in tables)    {        string strFileName = Output + "/" + dt.Name.ToString().Replace("dbo.",""+ ".cs";        FileStream fs = new FileStream(strFileName,FileMode.Create,FileAccess.Write);        StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.UTF8);        sw.WriteLine("using System;");        sw.WriteLine("using System.Collections.Generic;");        sw.WriteLine("using System.Text;");        sw.WriteLine("using System;");        sw.WriteLine("using System.Data;");        sw.WriteLine("");        sw.WriteLine("#region ==== " + dt.Name.ToString().Replace("dbo.",""+ " ====");        sw.WriteLine("public class " + dt.Name.ToString().Replace("dbo.",""));        sw.WriteLine("{");        sw.WriteLine("    public " + dt.Name.ToString().Replace("dbo.",""));        sw.WriteLine("    {}");        sw.WriteLine("  #region ==== Variable ====");            foreach(ColumnSchema cs in dt.Columns)            {        sw.WriteLine("    //" + cs.Description);        sw.WriteLine("    private " + GetType(cs)+ " " + cs.Name.ToLower() + ";");            }        sw.WriteLine("  #endregion");            foreach(ColumnSchema cs in dt.Columns)            {        sw.WriteLine("    ///<summary>");        sw.WriteLine("    ///" + cs.Description);        sw.WriteLine("    ///</summary>");        sw.WriteLine("    public " + GetType(cs) + " " + cs.Name.ToString());        sw.WriteLine("    {");        sw.WriteLine("        get");        sw.WriteLine("        {");        sw.WriteLine("            return  " + cs.Name.ToString().ToLower() + ";");        sw.WriteLine("        }");        sw.WriteLine("        set");        sw.WriteLine("        {");        sw.WriteLine("            " + cs.Name.ToString().ToLower() + " = value;");        sw.WriteLine("        }");        sw.WriteLine("    }");            }        sw.WriteLine("}");        sw.WriteLine("#endregion");        sw.Close();    }} </ script >  

    最新回复(0)