MVC 之 T4模板簡介

2022-02-04 06:49:48 字數 2282 閱讀 5663

一、t4模板內容簡介

為了更好地學習t4模板,我們安裝乙個外掛程式tangible t4 editor 在使用了ef生成實體類後,我們會發現乙個.tt字尾的檔案,它就是t4模板,直接開啟 它的內容如下圖:

就是這乙個模板,生成了我們需要的類,省去了我們手寫的麻煩,提高了工作效率

,生成的實體類如下圖:

那麼,這些類是如何用t4模板生成出來的?要自定義模板又該如何操作?

下面來簡單介紹下t4模板中的核心**

1、全域性變數申明

//模板指令集 告訴編輯器這是乙個模板 用c#語言,

//匯入外部的模板

//輸出擴充套件名為.cs的檔案

上面段**就是定義要用到的全域性變數(如 要對映類的edmx檔案、引用命名空間、實體類集合等...)

2、生成類頂部注釋、實體類命名空間 及 實體類名稱和字尾名

writeheader(codestringgenerator, filemanager);//生成類中的最頂部注釋

這句**生成的相應類檔案如下圖

3、引用空間名稱 usingdirectives 方法

public string usingdirectives(bool inheader, bool includecollections = true)

using system;" +

"",inheader ? environment.newline : "",

includecollections ? (environment.newline + "using system.collections.generic;") : "",

inheader ? "" : environment.newline)

: "";

}

預設引用了system和system.collections.generic,如下圖:

4、定義類名 entityclassopening方法

public string entityclassopening(entitytype entity)

partial class ",

accessibility.fortype(entity),

_code.spaceafter(_code.abstractoption(entity)),

_code.escape(entity),

}

accessibility.fortype(entity) 訪問修飾符,_code.escape(entity) 類名稱 ,如下圖:5、生成字段屬性 property方法

public string property(edmproperty edmproperty)

get; set; }}",

accessibility.forproperty(edmproperty),

_code.escape(edmproperty),

_code.spaceafter(accessibility.forgetter(edmproperty)),

_code.spaceafter(accessibility.forsetter(edmproperty)));

}

二、t4模板拓展 繼承基類、介面

一般我們在基類中定義一些通用的方法,讓子類直接繼承使用,先定義如下基類:

public class ientitywhere t : class , new()

}/// /// 根據條件查詢

///

///

///

public t find(expression> where = null)

}

直接修改t4模板中的 定義類名 entityclassopening 方法,繼承基類的find方法,修改後的**如下:

public string entityclassopening(entitytype entity)

partial class : ientity<>",

accessibility.fortype(entity),

_code.spaceafter(_code.abstractoption(entity)),

_code.escape(entity),

}

然後直接儲存一下,再檢視t4模板生成的類,發現它們都自動繼承了ientity類,如下圖

呼叫 ,直接b_article model = new b_article().find(c => c.username == "tess");

T4模板語法

t4,即4個t開頭的英文本母組合 text template transformation toolkit。t4文字模板,即一種自定義規則的 生成器。根據業務模型可生成任何形式的文字檔案或供程式呼叫的字串。模型以適合於應用程式域的形式包含資訊,並且可以在應用程式的生存期更改 template deb...

T4模板 入門

t4模板作為vs自帶的一套 生成器,功能有多強大我也不知道,最近查詢了一些資料學習一下,做個筆記 更詳細的資料參見 msdn 你必須懂的t4模板 深入淺出 t4模板是沒有顏色高亮提示的,我們可以安裝vs支援的外掛程式,我安裝的是 t4 editor,當然還有其他比如 visual t4等,t4模板分...

CodeFirst時使用T4模板

我們都知道t4模板用於生成相似 在dbfirst和modelfirst條件下我們很容易從.edmx下獲取所有實體類和其名稱,並且通過我們定義的模板和某些遍歷工作為我們生成所需要的相似 但是codefirst模式下,我們沒有edmx,從哪獲取所有類名呢?難道要我們乙個個把entity實體層類名寫進陣列...