您的位置:首页 > 数据库

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

2007-02-16 10:31 405 查看
此模版需要执行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>

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐