转 T4 学习
原文:
http://www.olegsych.com/2007/12/text-template-transformation-toolkit/
http://www.cnblogs.com/osamede/archive/2009/07/19/T4_Tutorial.html
<#@ 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 = "Server=(local);initial catalog=CookBook;Integrated Security=SSPI;User ID=sa;Password=123456"; 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; } } <# } #> } <# } #> }
<#@ 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" #> <#@ import namespace="System.Text" #> using System; namespace MyProject.Entities { <# string connectionString = "Server=(local);initial catalog=CookBook;Integrated Security=SSPI;User ID=sa;Password=123456"; 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) { ds.Tables.Clear(); string tableName = row["TABLE_NAME"].ToString(); #> public class <#= tableName.Trim('s') #>Dal { <# command.CommandText = selectQuery.Replace("@tableName",tableName); ad.FillSchema(ds, SchemaType.Mapped, tableName); List<string> cols = new List<string>(); List<string> colsWith = new List<string>(); List<string> colsSet = new List<string>(); foreach (DataColumn dc in ds.Tables[0].Columns) { string colName = dc.ColumnName; if(colName.ToUpper() =="ID") { continue; } cols.Add(colName); colsWith.Add("@"+colName); colsSet.Add(colName+"=@"+colName); } string colNams = string.Join(",", cols); string colNamsWith = string.Join(",", colsWith); string colNamsSet = string.Join(",", colsSet); #> public void Add<#= tableName #>(<#= tableName.Trim('s') #> item) { string sql = @"INSERT INTO dbo.<#= tableName #> (<#=colNams#>) values(<#=colNamsWith#>)"; } public void Update<#= tableName #>(<#= tableName.Trim('s') #> item) { string sql = @"UPDATE dbo.<#= tableName #> SET <#=colNamsSet#>"; } } <# } #> }
用对方法才有效率,做对事情才有效果
“麻烦”是自己“处理”不当的结果
“困难”是自己“学习”不够的反射
“挫折”是自己“努力”不足的代价
“麻烦”是自己“处理”不当的结果
“困难”是自己“学习”不够的反射
“挫折”是自己“努力”不足的代价
浙公网安备 33010602011771号