使用T4为数据库自动生成实体类(C#)
2012-02-13 08:45
471 查看
使用T4为数据库自动生成实体类(C#)
T4 (Text Template Transformation Toolkit)是一个基于模板的代码生成器。使用T4你可以通过写一些ASP.NET-like模板,来生成C#,
T-SQL, XML等代码。
下载示例代码
一
“Hello World
”代码生成器
1 创建一个C# Console工程,添加一个名为“HelloWorld.tt”的文本文件。
如果你正在使用Visual Studio 2005你需要安装 DSL Tools。 |
<#@
template
language="C#"
#>
// <autogenerated>
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
// </autogenerated>
using System;
public
class <#=
this.ClassName #>
{
public
static
void HelloPot()
{
Console.WriteLine("Hello World");
}
}
上面的模板将生成一个名为“HelloWorld”的类,当你保存HelloWorld.tt时,Visual Studio将为你生成以下代码:
// <autogenerated>
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
// </autogenerated>
using System;
public class HelloWorld
{
public static void HelloPot()
{
Console.WriteLine("Hello World");
}
}
3 添加另一个文本文件HelloWorld1.tt.,加入以下内容:
<#
this.ClassName =
"HelloWorld1";
#>
<#@
include
file="HelloT4.tt"
#>
通过修改ClassName的值可以更改类名,以上模板将生成一个名为HelloWorld1类。
// <autogenerated>
// This code was generated by a tool. Any changes made manually will be lost
// the next time this code is regenerated.
// </autogenerated>
using System;
public class HelloWorld1
{
public static void HelloPot()
{
Console.WriteLine("Hello World");
}
}
二 数据库自动生成实体类
这个实例会创建一个模板为数据库中的每一张表,自动创建相应的实体类。
1 首先我们需要添加一些程序集引用,命名空间。
<#@
template
language="C#"
debug="True"
hostspecific="True"
#>
<#@
output
extension=".cs"
#>
<#@
assembly
name="System.Data"
#>
<#@
assembly
name="System.xml"
#>
<#@
import
namespace="System.Collections.Generic"
#>
<#@
import
namespace="System.Data.SqlClient"
#>
<#@
import
namespace="System.Data"
#>
2 获取数据库表结构.
<#
string connectionString =
"data source=.""SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=MIAPortal;";
SqlConnection conn =
new SqlConnection(connectionString);
conn.Open();
System.Data.DataTable schema = conn.GetSchema("TABLES");
string selectQuery =
"select * from @tableName";
SqlCommand command =
new SqlCommand(selectQuery,conn);
SqlDataAdapter ad =
new SqlDataAdapter(command);
System.Data.DataSet ds =
new DataSet();
我们通过GetSchema("TABLES")获取了数据库中所有表的表名,接着通过表名,获取相应表的表结构。
3 生成代码
<#@
template
language="C#"
debug="True"
hostspecific="True"
#>
<#@
output
extension=".cs"
#>
<#@
assembly
name="System.Data"
#>
<#@
assembly
name="System.xml"
#>
<#@
import
namespace="System.Collections.Generic"
#>
<#@
import
namespace="System.Data.SqlClient"
#>
<#@
import
namespace="System.Data"
#>
using System;
namespace MyProject.Entities
{
<#
string connectionString =
"data source=.""SQLEXPRESS;Integrated Security=SSPI;Initial Catalog=MIAPortal;";
SqlConnection conn =
new SqlConnection(connectionString);
conn.Open();
System.Data.DataTable schema = conn.GetSchema("TABLES");
string selectQuery =
"select * from @tableName";
SqlCommand command =
new SqlCommand(selectQuery,conn);
SqlDataAdapter ad =
new SqlDataAdapter(command);
System.Data.DataSet ds =
new DataSet();
foreach(System.Data.DataRow row
in schema.Rows)
{ #>
public
class <#= row["TABLE_NAME"].ToString().Trim('s')
#>
{ <#
ds.Tables.Clear();
command.CommandText = selectQuery.Replace("@tableName",row["TABLE_NAME"].ToString());
ad.FillSchema(ds, SchemaType.Mapped, row["TABLE_NAME"].ToString());
foreach (DataColumn dc
in ds.Tables[0].Columns)
{ #>
private <#= dc.DataType.Name #> _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(),
dc.ColumnName[0].ToString().ToLower()) #>;
public <#= dc.DataType.Name #> <#= dc.ColumnName #>
{
get {
return _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(),
dc.ColumnName[0].ToString().ToLower()) #>; }
set { _<#= dc.ColumnName.Replace(dc.ColumnName[0].ToString(),
dc.ColumnName[0].ToString().ToLower()) #> = value; }
}
<# } #>
}
<#
} #>
}
引用:
Code
Generation Using T4 Templates ---AzamSharp
How to create a simple T4 template---Oleg
Sych
相关文章推荐
- 使用T4为数据库自动生成实体类(C#)
- T4自动生成数据库C#实体类学习(1)
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
- 使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- Eclipse使用自带插件JPA Tools实现自动生成数据库对应表的实体类(不使用Hibernate)
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格?[转]
- [导入]C#分析数据库结构,使用XSL模板自动生成代码
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码
- 使用T4为数据库自动生成实体类
- C#分析数据库结构,使用XSL模板自动生成代码
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(转载)
- 黄聪:C#代码生成工具:文本模板初体验 使用T4批量修改实体框架(Entity Framework)的类名
- C#分析数据库结构,使用XSL模板自动生成代码
- 以实例说明如何使用C#从数据库中提取数据,按要求自动生成定制的Excel表格
- C#分析数据库结构,使用XSL模板自动生成代码
- C#分析数据库结构,使用XSL模板自动生成代码