转 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#>";                            
            }                   
    }
    <# } #>               

}

 

posted @ 2014-12-11 22:33  英雄饶命啊  阅读(162)  评论(0)    收藏  举报