日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

T4模板之菜菜鸟篇

發布時間:2023/12/2 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 T4模板之菜菜鸟篇 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、廢話

T4(Text Template Transformation Toolkit)是微軟官方在VisualStudio 2008中開始使用的代碼生成引擎。在 Visual Studio 中,“T4 文本模板”是由一些文本塊和控制邏輯組成的混合模板,它可以生成文本文件。 在 Visual C# 或 Visual Basic 中,控制邏輯編寫為程序代碼的片段。生成的文件可以是任何類型的文本,例如網頁、資源文件或任何語言的程序源代碼。現在的VS中只要與代碼生成相關的場景基本上都能找T4的身影,比如MVC的視圖模板,Entity Framwork的DataContext模板等等。

二、說明

1、文本是基于Visual Studio 2013 + vs插件(Devart T4 Editor) 講述的,為什么不用Visual Studio 2015,目前Devart T4 Editor不支持vs2015,有點蛋疼。哪個高手懂得VS插件的制作,幫忙升級下 Devart T4 Editor 唄。

2、這應該真心是一篇For菜菜鳥的文章,但凡有經驗的就略過吧!

三、視覺優先

1、新建一個控制臺應用程序(Zeje.T4)

2、在項目中“添加”->”新建項”,彈出“添加新項”對話框,在右上角的搜索框輸入“模板”,分別針對這四種模板創建新項。

3、文件創建后,解決方案資源管理器的列表展示如下。

4、各種疑問

4.1、EF 5.x DbContext生成器是啥?

4.2、EF 6.x DbContext生成器是啥?

4.3、文本模板是啥?

4.4、運行時文本模板是啥?

四、解惑

1、返璞歸真

  • 不管是什么,都是文件,要么是“文件”,要么是“文件組”
  • 都有后綴為.tt的文件
  • 后綴為.tt的文件,我們統稱其為“T4模板文件”

2、各個擊破

2.1 、EF 5.x DbContext生成器

點擊添加后,生成的是兩個后綴為.tt的文件

剛才命名是“EF5”,那么它就是幫我們產生兩個叫“XX.Context.tt”和“XX.tt”的文件。

打開EF5.Context.tt和EF5.tt文件,都是TMD的一堆代碼,真心看不懂有木有?那就PASS吧!

2.2、EF 6.x DbContext生成器

TMD呀!跟2.1說的完全一樣,還是TMD的一堆代碼。不過細心的會發現,文件里的內容會有所不同。是PASS嗎?不,展開看看

文件EF6.Context.cs和EF6.cs里面基本上沒有內容,回去看看EF5.Context.cs和EF5.cs文件,基本上一樣也是沒有內容,PASS吧!

2.3、文本模板

打開TextTemplate_.tt,眼前一亮的有木有,這是多大的差距呀!

這TextTemplate_.tt文件中的內容就是這般簡單,TextTemplate_.txt文件里什么內容都木有。

為什么有的.tt文件下面展開的是XXX.cs文件,而又得卻是XXX.txt文件呢?回頭仔細研究下,原來是這段代碼(如下圖)在作怪

2.4、運行時文本文件

分別打開RuntimeTextTemplate_.tt和RuntimeTextTemplate_.cs的文件,是否又如上面的一樣.tt文件一堆代碼而展開后的文件基本沒內容?好吧!原以為自己找到規律了,卻發現自己太天真了,.tt文件內容很少,.cs文件的內容又是一堆!

五、雪上加霜

為什么雪上加霜呢?因為下面的也跟T4模板扯上點關系!

0、新建項目“Zeje.EF_”(項目類型為類庫,.net framework版本為4.5)

1、在項目中“添加”->”新建項”,彈出“添加新項”對話框,在右上角的搜索框輸入“模型”,創建ADO.NET實體數據模型“Zeje.Hr”

2、點擊添加,發現了一個選擇題,到底選哪個?

  • 來自數據庫的EF設計器
  • 空EF設計器模型
  • 空Code First模型
  • 來自數據庫的Code First

好吧,就讓暴風雨來得更猛烈些吧!咱們四個都創建,分別命名,對比下(具體新建過程就不列出來占用篇幅了)!

  • 來自數據庫的EF設計器(命名: DBFirst,數據庫基于自己本地的[Zeje.Hr]數據庫)

  • 空EF設計器模型(命名: DBFirst_)

  • 空Code First模型(命名: CodeFirst_,)

  • 來自數據庫的Code First(命名: CodeFirst,數據庫基于自己本地的[Zeje.Hr]數據庫【把相關放在CodeFirst文件夾中】)

好吧!不敢跟我耍狠了,只有第一種才跟T4模板扯上關系。再把圖片引用下,相關T4模板文件已經用紅色框圈住了,解說下吧!

  • DBFirst.edmx【本質上就是一個XML文件,記錄的是數據庫映射出來的實體,這實體包括表、視圖、存儲過程、約束等】
  • DBFirst.Context.tt 【T4模板,展開后下面有一個DBFirst.Designer.cs文件】
  • DBFirst.Designer.cs【還真不知道現在起什么作用】
  • DBFirst.edmx.diagram【本質上就是一個XML文件,記錄的是edmx設計視圖下實體的坐標】
  • DBFirst.tt【T4模板,展開后下面還有多個.cs文件,TMD這又跟上面的只有一個.cs或者一個.txt文件不同,至于怎么整的后面一起研究】

對于這些個文件,它們是一個文件組,它們的布局取決于【Zeje.EF_.csproj】文件,假如用記事本打開,它的本質也一個XML文件,通過一定的規則,把上述文件組織在一起而已。在日常的操作中,我們可能一不小心隨便拖動下這些個文件中的某一個,它的組合就亂了,那個時候就只能通過手動調整.csproj文件,重新按照既定規則組合起來。

轉載于:https://www.cnblogs.com/zeje/p/5156339.html

總結

以上是生活随笔為你收集整理的T4模板之菜菜鸟篇的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。