使用T4模板為EF框架添加實體根據數據庫自動生成字段注釋的功能


在以往的開發過程當中,我會經常選擇EF框架作為底層數據結構,EF為我們提供了很好的ado.net數據訪問機制,他覆蓋了數據鏈接,linq等多方面內容,而且當我們使用數據庫優先或者code first的時候都體現出明顯的優勢。

  1. 一鍵生成實體,免除手寫model的煩惱。
  2. 實時更新數據結構,使數據庫與model保持高度一致。
  3. 提供多種底層數據的訪問方法。
  4. 優雅的語法,對於我這種喜愛偷懶的程序猿是一大福音。

然而entity framework在vs中生成的.edmx文件,會導致摘要(說明)為空的bug,具體bug信息為“沒有元數據文檔可用。”,導致我們表名打點去字段時,無法預知字段代表的含義,這在開發當中也是比較致命的,因為開發人員只能靠經驗和推測判斷,表、字段的含義,而不能直觀的第一時間知道他們的用途,給開發帶來了很多的不便。

 

網絡上面有一個解決方法如下:

http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html

不過我試了下沒解決太麻煩了 而且一旦EF要重新生成又的重新弄。

后來我查詢 了一下資料,可以運用T4模板來解決這個問題。

廢話不啰嗦,開始:

首先我們先下載一個文件GetSummery,這里我提供了,大家可以直接下載: 下載

我們在數據庫建立一個表,並給表中字段添加說明,如圖所示:

20140102145350

 

然后,我們創建一個解決方案,選擇類庫

20140102145732

繼續,添加實體數據模型,具體步驟我就不演示了,大家設置好數據庫,直接生成就可以了。

20140102145922

現在我們來看一下所生成的實體,大家可以看到並沒有什么字段注釋說明:

20140102155409

 

接來下就把我們下載下來的文件解壓,將解壓出來的文件放入解決方案中,如圖所示:

20140102152712

接下來,我們修改下app.config,操作很簡單,添加一個連接字符串:

然后我們修改model.tt,在頂部位置加入代碼:

加入的位置如圖:

20140102155004

 

緊接着在模板中查找代碼片段<#=codeStringGenerator.UsingDirectives(inHeader: false)#>的位置,在代碼下插入:

繼續查找代碼片段:<#=codeStringGenerator.Property(edmProperty)#>的位置,在代碼上方插入:

注意:前面的注釋符號///不能少

這里放出一個我的截圖,方便大家對照行號,確定大概位置:

20140102160700

到這里,就基本上完成了,去刷新一下你的實體模型edmx文件,你會發現字段的注釋都自動加上去了。

20140102161250

 

本文轉載至:http://jeffblog.sinaapp.com/archives/501 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM