CodeFirst時使用T4模板

2021-09-08 17:57:00 字數 1438 閱讀 9880

我們都知道t4模板用於生成相似**。

在dbfirst和modelfirst條件下我們很容易從.edmx下獲取所有實體類和其名稱,並且通過我們定義的模板和某些遍歷工作為我們生成所需要的相似**。

但是codefirst模式下,我們沒有edmx,從哪獲取所有類名呢?難道要我們乙個個把entity實體層類名寫進陣列裡嗎,十個百個千個?

解決過程:

1.使用反射獲取所有類名,並將此段**寫到t4模板中。

foreach (type t in assembly.load("entity").gettypes())

else

}

2.結果如上**可以引導程式集並且獲取所有類名,可以自行斷點檢視。當我們把這段**放到t4模板中,報錯資訊卻是不能引導程式集。(看見了執行時文字模板,還沒嘗試那個模板是否有效)

3.最後實在沒辦法了,我在應用中建立了乙個名為helptool的控制台程式。講上段**在main中改寫如下:

static void main(string args)

else

}writer.write("");

writer.write(classnamestr);

"writeclassnamesuccessfully");

}}

4.很明確,我將它寫到文字檔案裡,每次修改實體類,我都要執行一下我的控制台應用。

得到所有實體類的名,存到陣列中,並遍歷生成相似**。

<#@ template language="c#" debug="false" hostspecific="true"#>

<#@ include file="ef.utility.cs.ttinclude"#>

<#@ output extension=".cs"#>

<#

string classname=new string;

using (streamreader reader = new streamreader("d:\\entitiesnames.txt"))

#>

using system;

using system.collections.generic;

using system.linq;

using system.text;

using system.threading.tasks;

using dalfactory;

using entity;

using s2s.idal;

namespace s2s.unitofwork

}<#}#>

}}

我知道這個方法很笨,談不上好方案,在遇到問題,coder們總能提出各種各樣的解決方案。

希望園子裡的朋友們推薦好的方案,多多指教。

T4模板語法

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

T4模板 入門

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

SqlSugar框架T4模板的使用

一 t4模板說明 1.t4模板是用來生成model層實體類的 2.檔案字尾為.tt 3.需要修改配置主要有 引用的sqlsugar.dll的位置 生成實體類的位置及生成實體類的命名空間 4.t4模板生成 對資料庫有要求,資料庫應該是不區分大小寫的,如果你建立的資料庫是否區分大小寫的 chinese ...