我們在用EF從資料庫生成模型的時候,預設實體類是沒有註釋的,但是我們已經在資料庫欄位添加說明瞭,能不能自動把註釋也拿過來? 答案是:能。 那麼我們開始 首先隨便開一個ASP.NET MVC項目,我們添加ADO實體數據模型。添加完成後我們打開userinfo.cs(這裡我的模型名稱為userinfo) ...
我們在用EF從資料庫生成模型的時候,預設實體類是沒有註釋的,但是我們已經在資料庫欄位添加說明瞭,能不能自動把註釋也拿過來?
答案是:能。
那麼我們開始
首先隨便開一個ASP.NET MVC項目,我們添加ADO實體數據模型。添加完成後我們打開userinfo.cs(這裡我的模型名稱為userinfo)如圖:
雙擊打開後發現現在是沒有註釋的。
然後下載此文件:GetSummery.ttinclude (這個文件沒有放下載鏈接,可以去網上找找,也可以給我留言評論我來給你)
嗯,現在下載完文件後把他解壓後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