一、t4模板內容簡介
為了更好地學習t4模板,我們安裝乙個外掛程式tangible t4 editor 在使用了ef生成實體類後,我們會發現乙個.tt字尾的檔案,它就是t4模板,直接開啟 它的內容如下圖:
就是這乙個模板,生成了我們需要的類,省去了我們手寫的麻煩,提高了工作效率
,生成的實體類如下圖:
那麼,這些類是如何用t4模板生成出來的?要自定義模板又該如何操作?
下面來簡單介紹下t4模板中的核心**
1、全域性變數申明
//模板指令集 告訴編輯器這是乙個模板 用c#語言,上面段**就是定義要用到的全域性變數(如 要對映類的edmx檔案、引用命名空間、實體類集合等...)//匯入外部的模板
//輸出擴充套件名為.cs的檔案
2、生成類頂部注釋、實體類命名空間 及 實體類名稱和字尾名
writeheader(codestringgenerator, filemanager);//生成類中的最頂部注釋這句**生成的相應類檔案如下圖
3、引用空間名稱 usingdirectives 方法
public string usingdirectives(bool inheader, bool includecollections = true)預設引用了system和system.collections.generic,如下圖:using system;" +
"",inheader ? environment.newline : "",
includecollections ? (environment.newline + "using system.collections.generic;") : "",
inheader ? "" : environment.newline)
: "";
}
4、定義類名 entityclassopening方法
public string entityclassopening(entitytype entity)accessibility.fortype(entity) 訪問修飾符,_code.escape(entity) 類名稱 ,如下圖:5、生成字段屬性 property方法partial class ",
accessibility.fortype(entity),
_code.spaceafter(_code.abstractoption(entity)),
_code.escape(entity),
}
public string property(edmproperty edmproperty)二、t4模板拓展 繼承基類、介面get; set; }}",
accessibility.forproperty(edmproperty),
_code.escape(edmproperty),
_code.spaceafter(accessibility.forgetter(edmproperty)),
_code.spaceafter(accessibility.forsetter(edmproperty)));
}
一般我們在基類中定義一些通用的方法,讓子類直接繼承使用,先定義如下基類:
public class ientitywhere t : class , new()直接修改t4模板中的 定義類名 entityclassopening 方法,繼承基類的find方法,修改後的**如下:}/// /// 根據條件查詢
///
///
///
public t find(expression> where = null)
}
public string entityclassopening(entitytype entity)然後直接儲存一下,再檢視t4模板生成的類,發現它們都自動繼承了ientity類,如下圖partial class : ientity<>",
accessibility.fortype(entity),
_code.spaceafter(_code.abstractoption(entity)),
_code.escape(entity),
}
呼叫 ,直接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實體層類名寫進陣列...