利用T4模板,可以很方便的从数据库映射成Model模型,相当于动软等功效。但动软是可以直接生成三层,抽象工厂的,T4没那么牛叉,所以我们一般只用作生成Modle或者Server等指定方法了。
废话少说,切入正题:
下面我将讲解的有两部分,一部分是根据T4将方法属性等生成到一个类里面,另一个是分配生成到不同类里面。
一.根据T4将方法生成到一个类里面
代码如下:
Customers.tt
<#@ assembly name="System.Core.dll" #>
<#@ assembly name="System.Data.dll" #>
<#@ assembly name="System.Data.DataSetExtensions.dll" #>
<#@ assembly name="System.Xml.dll" #>
<#@ import namespace="System" #>
<#@ import namespace="System.Xml" #>
<#@ import namespace="System.Linq" #>
<#@ import namespace="System.Data" #>
<#@ import namespace="System.Data.SqlClient" #>
<#@ import namespace="System.Collections.Generic" #>
<#@ import namespace="System.IO" #>
<#@ include file="$(ProjectDir)DbHelper.ttinclude" #>
using System;
namespace T4ConsoleApplication.Entities
{
public class <#=config.TableName#>
{
<# foreach(DbColumn column in DbHelper.GetDbColumns(config.ConnectionString, config.DbDatabase, config.TableName)){#>
public <#= column.CSharpType#><# if(column.CommonType.IsValueType && column.IsNullable){#>?<#}#> <#=column.ColumnName#> { get; set; }
<#}#>
}
}
<#+
public class config
{
//修改要生成的数据库表
public static readonly string ConnectionString="Data Source=.;Integrated Security=true;";
public static readonly string DbDatabase="Inferno";
public static readonly string TableName="RepositoryModel";
}
#>