咱们在用EF从数据库生成模型的时候,默认实体类是没有注释的,可是咱们已经在数据库字段添加说明了,能不能自动把注释也拿过来?web
答案是:能。数据库
那么咱们开始ide
首先随便开一个ASP.NET MVC项目,咱们添加ADO实体数据模型。添加完成后咱们打开userinfo.cs(这里个人模型名称为userinfo)如图:ui
双击打开后发现如今是没有注释的。spa
而后下载此文件:GetSummery.ttinclude (这个文件没有放下载连接,能够去网上找找,也能够给我留言评论我来给你)code
嗯,如今下载完文件后把他解压后copy到和Model1.edmx同一目录下,如图:server
如今,在数据库表字段添加说明或者表说明(表说明映射到EF中就是类的注释),添加表说明代码以下:blog
1 EXEC sys.sp_addextendedproperty @name=N'MS_Description', @value=N'注释的描述' ,@level0type=N'SCHEMA',@level0name=N'dbo', @level1type=N'TABLE',@level1name=N'要注释的表名'
如今咱们打开GetSummery.ttinclude文件ip
找到 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