為了減少重復勞動,可以通過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文件類已經生成好了實體類了。