久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

使用T4為數(shù)據(jù)庫(kù)自動(dòng)生成實(shí)體類(C#)

 ThinkTank_引擎 2014-07-19


T4 (Text Template Transformation Toolkit)
是一個(gè)基于模板的代碼生成器,。使用T4你可以通過(guò)寫一些ASP.NET-like模板,,來(lái)生成C#, T-SQL, XML等代碼,。

下載示例代碼 

Hello World ”代碼生成器

1 創(chuàng)建一個(gè)C# Console工程,,添加一個(gè)名為“HelloWorld.tt”的文本文件。

如果你正在使用Visual Studio 2005你需要安裝 DSL Tools,。

2 HelloWorld.tt中添加以下內(nèi)容

<#@ 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");

   }

}

上面的模板將生成一個(gè)名為“HelloWorld”的類,當(dāng)你保存HelloWorld.tt時(shí),,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 添加另一個(gè)文本文件HelloWorld1.tt.,加入以下內(nèi)容:

<#

    this.ClassName = "HelloWorld1";

#>

<#@ include file="HelloT4.tt" #>

通過(guò)修改ClassName的值可以更改類名,以上模板將生成一個(gè)名為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");
   }

}

 

數(shù)據(jù)庫(kù)自動(dòng)生成實(shí)體類

這個(gè)實(shí)例會(huì)創(chuàng)建一個(gè)模板為數(shù)據(jù)庫(kù)中的每一張表,,自動(dòng)創(chuàng)建相應(yīng)的實(shí)體類。

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 獲取數(shù)據(jù)庫(kù)表結(jié)構(gòu)

<#

           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();
我們通過(guò)GetSchema("TABLES")獲取了數(shù)據(jù)庫(kù)中所有表的表名,接著通過(guò)表名,,獲取相應(yīng)表的表結(jié)構(gòu),。

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




 

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多