为了减少重复劳动,可以通过T4读取数据库表结构,生成实体类,用下面的实例测试了一下
1.首先创建一个项目,并添加文本模板:
2.添加 文本模板:
3.向T4文本模板文件添加代码:
<#@ template language="C#" debug="True" hostspecific="True" #> <#@ assembly name="System.Data" #> <#@ assembly name="System.xml" #> <#@ import namespace="System.Collections.Generic" #> <#@ import namespace="System.Data.SqlClient" #> <#@ import namespace="System.Data" #> <#@ output extension=".cs" #> using System; namespace Test.T4 { <# string connectionString="data source=(local);initial catalog=musicstore;user id=sa;password=123456;"; SqlConnection conn = new SqlConnection(connectionString); conn.Open(); DataTable schema = conn.GetSchema("TABLES"); string strSql = "select * from @tableName"; SqlCommand command = new SqlCommand(strSql,conn); SqlDataAdapter ad = new SqlDataAdapter(command); DataSet ds = new DataSet(); foreach(DataRow row in schema.Rows) { #> public class <#= row["TABLE_NAME"].ToString().Trim() #> { <# ds.Tables.Clear(); command.CommandText = strSql.Replace("@tableName",row["TABLE_NAME"].ToString()); ad.FillSchema(ds, SchemaType.Mapped, row["TABLE_NAME"].ToString()); foreach (DataColumn dc in ds.Tables[0].Columns) { #> public <#= dc.DataType.Name #> <#= dc.ColumnName #> { get; set; } <# } #> } <# } #> <# conn.Close(); #> }
DataTable schema = conn.GetSchema("TABLES");获取数据库的表名,然后通过foreach语句逐个遍历,更具表名查询字段名,生成实体类。
好了,保存一下,就可以看到DBToClass.cs文件类已经生成好了实体类了。