天天看點

一起談.NET技術,Linq to SQL T4 代碼生成器 (-)通路 DataContext 對象

這個工具,是在一個項目中提取出來的,現在免費提供給大家使用。

本文介紹的 Linq to SQL T4 代碼生成器有如下特點:

1、支援 dbml 檔案。能夠通路 dbml 設計器中的對象。

2、可能通多修改模版來生成代碼。

3、可以生成多個檔案。比如:一個類一個檔案。

準備:

1、T4 代碼編輯器(goole 即可)。盡管不是必須,但是為了友善代碼的編輯,還是建議安裝一個。

開始:

1、建立一個項目。然後運作 LicenseFileGenerator.exe 生成一個名為 deco.lic 的授權檔案,并添加到項目中。

一起談.NET技術,Linq to SQL T4 代碼生成器 (-)通路 DataContext 對象

其中 Assembly 為項目生成檔案的名稱,Company 為項目中的公司名稱,如果沒有,可以不填。在這裡生的 assembly 檔案名為 ConsoleApplication1.exe,是以要 Assembly 檔案本框中填入的是 ConsoleApplication1.exe ,而并非 ConsoleApplication1,公司名稱為空,是以可以不填。

一起談.NET技術,Linq to SQL T4 代碼生成器 (-)通路 DataContext 對象

點選 Generate 按鈕後在目前路徑中生成一個 deco.lic 檔案。請把該檔案添加到項目中去。

2、建立名為  Northwind.dbml 的檔案,并禁用原來的代碼生成器。選項 Northwind.dbml 檔案。把 Custom Tool 選項清空(預設為 MSLinqToSQLGenerator)。

一起談.NET技術,Linq to SQL T4 代碼生成器 (-)通路 DataContext 對象
一起談.NET技術,Linq to SQL T4 代碼生成器 (-)通路 DataContext 對象

3、建立一個名為 Northwind.tt  的檔案。打開 Northwind.tt 檔案進行編輯。然後按儲存生成代碼。

内容如下:

<#@ template inherits="ModelingTextTransformation" language="C#" debug="true" hostspecific="True"#>

<#@ 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 對應起來。