EF生成實體自動添加數據庫字段注釋(GetSummery)


  我們在用EF從數據庫生成模型的時候,默認實體類是沒有注釋的,但是我們已經在數據庫字段添加說明了,能不能自動把注釋也拿過來?

答案是:能。

那么我們開始

  首先隨便開一個ASP.NET   MVC項目,我們添加ADO實體數據模型。添加完成后我們打開userinfo.cs(這里我的模型名稱為userinfo)如圖:

雙擊打開后發現現在是沒有注釋的。

然后下載此文件:GetSummery.ttinclude (https://pan.baidu.com/s/1vmQ3VrHfEAbntXP3TJhzhQ 提取碼: oft9)

嗯,現在下載完文件后把他解壓后copy到和Model1.edmx同一目錄下,如圖:

現在,在數據庫表字段添加說明或者表說明(表說明映射到EF中就是類的注釋),添加表說明代碼如下:

1 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'注釋的描述' ,@level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'要注釋的表名'

現在我們打開GetSummery.ttinclude文件

找到 string ConnectionStringName = "MyConn"

這是數據庫連接名,在這里我改為string ConnectionStringName = "ConnStr"  

然后在根目錄下web.config文件<connectionStrings>節點下配置數據庫連接(這個連接是GetSummery.ttinclude的數據庫連接,並不是你自己的連接字符串,所以不要省略)

1 <add name="ConnStr" connectionString="server=.;uid=sa;pwd=數據庫密碼;database=userinfo" providerName="Syste4m.Data.SqlClient"></add>

配置后,關閉GetSummery.ttinclude。

打開Model1.tt。

在Model1.tt  上方添加 <#@ include file="GetSummery.ttinclude" #>,如圖:

繼續,找到<#=codeStringGenerator.EntityClassOpening(entity)#> 在它上方添加

/// <summary>
/// <#= getTableSummery(code.Escape(entity)) #>
/// </summary>

如圖:

繼續,找到<#=codeStringGenerator.Property(edmProperty)#> 在它上方添加

/// <summary>
/// <#= getColumnSummery(code.Escape(entity),code.Escape(edmProperty)) #>
/// </summary>

如圖:

到此,我們ctrl+s 保存。然后打開我們的實體類 userinfo.cs  發現我們在數據庫加的說明已經自動注釋上去了。如圖:

如果我們在數據庫更新了我們的注釋說明,那么我們,在打開Moedl1.tt 文件,然后在ctrl+s保存一下類就更新了。

謝謝!好了,該睡覺了。

23:23:16


免責聲明!

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



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