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>
第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>
相关文章推荐
- 通过generatorConfig.xml自动生成实体类和数据库操作文件
- 关于MyEclipse中Hibernate实现数据库和到工程文件实体类的映射,自动生成POJO
- Mybatis根据数据库表自动生成实体类和xml映射文件
- SSM框架搭建(三) 数据库创建和MyBatis生成器自动生成实体类、DAO接口和Mapping映射文件
- 关于codesmith的一点使用--自动生成数据库中所有表的存储过程使用模板
- C#生成安装文件后自动附加数据库的思路跟算法
- Idea下Hibernate手动配置好实体类和hbm.xml后自动生成数据库表报错
- mybatis如何自动生成实体类,映射文件以及对应的dao层
- Eclipse从数据库逆向生成Hibernate实体类和映射文件(Eclipse插件系列之HibernateTools)
- 使用mybatis-generator自动生成实体类,接口实现类和Mapper映射配置文件
- 使用hibernate自动生成实体类时同时出现两个.java文件
- myeclipse从数据库反射生成实体类和映射文件
- eclipse中使用JPA根据数据库表自动生成注解实体类
- 用MyEclipse自动生成hibernate映射文件和实体类
- mybatis自动生成 实体类、接口、配置文件
- 通过实体类及映射文件生成数据库表
- 数据库操作-----开源第三方---greendao-----所有的dao和model自动生成,不用写,懒人必备
- MyBatis自动生成代码】根据数据库生成对应实体类,SQL方法等
- java通过实体类自动生成ibatis文件
- windows下自动生成文件夹下所有JNI所需的.h头文件