Linq to SQL T4 代碼生成器 (-)訪問 DataContext 對象
這個工具,是在一個項目中提取出來的,現在免費提供給大家使用。
本文介紹的 Linq to SQL T4 代碼生成器有如下特點:
1、支持 dbml 文件。能夠訪問 dbml 設計器中的對象。
2、可能通多修改模版來生成代碼。
3、可以生成多個文件。比如:一個類一個文件。
準備:
1、T4 代碼編輯器(goole 即可)。盡管不是必須,但是為了方便代碼的編輯,還是建議安裝一個。
2、下載安裝 Decode_VS2008 (必須)。
開始:
1、創建一個項目。然后運行 LicenseFileGenerator.exe 生成一個名為 deco.lic 的授權文件,并添加到項目中。
其中 Assembly 為項目生成文件的名稱,Company 為項目中的公司名稱,如果沒有,可以不填。在這里生的 assembly 文件名為 ConsoleApplication1.exe,因此要 Assembly 文件本框中填入的是 ConsoleApplication1.exe ,而并非 ConsoleApplication1,公司名稱為空,因此可以不填。
點擊 Generate 按鈕后在當前路徑中生成一個 deco.lic 文件。請把該文件添加到項目中去。
2、創建名為 Northwind.dbml 的文件,并禁用原來的代碼生成器。選項 Northwind.dbml 文件。把 Custom Tool 選項清空(默認為 MSLinqToSQLGenerator)。
3、創建一個名為 Northwind.tt 的文件。打開 Northwind.tt 文件進行編輯。然后按保存生成代碼。
內容如下:
<#@ QuickCode processor="DbmlProcessor" requires="ModelFile='Northwind.dbml'"#>
<#@ output extension=".cs" #>
<#@ import namespace = "System.Text.RegularExpressions" #>
using ALinq;
using ALinq.Mapping;
namespace <#= DataContext.ContextNamespace #>
{
public partial class <#= DataContext.Name #> : ALinq.DataContext
{
public <#= DataContext.Name #>(string connection) :
base(connection)
{
}
<# foreach(ITable table in DataContext.Tables){ #>
public Table<<#= table.Type.Name #>> <#= table.Member #>
{
get
{
return this.GetTable<<#= table.Type.Name #>>();
}
}
<# } #>
}
}
下來解釋一下上面的代碼。我們現在要關注的 DataContext 對象。這個對象很重要,Dbml 設計器的對象,都是通過 DataContext 對象來進行訪問。你可以把它和 Dbml 設計器的中的 DataContext 對應起來。
關于是 DataContext 的成員,請參考:http://www.alinq.org/document/decode.htm
示例代碼:http://files.cnblogs.com/ansiboy/ConsoleApplication1.zip