我們都知道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 ...