EF架构:使用T4模板为EF框架添加数据库实体注释

2019年10月9日15:16:55 评论 21
摘要

使用T4模版解决EF生成实体类的时候,没有自动生成表字段和表说明。

使用T4模板为EF框架添加数据库实体注释做项目我一般喜欢使用EF框架,采用Database-First方式,因为数据库已经存在,所以采用Database-First方式。且数据库变更实体数据也很好变更。

ef生成实体类的时候,发现微软没有自动生成表字段和表说明,在网上找了些资料,由于都不太全,倒腾了近1个小时,所以根据网上的帖子为基础,写得更详细一点,让初学者更容易明白和少走弯路。网上也有一些自动生成的软件,可以自动生成,但是更新数据库需要重新生成,有点麻烦,所有根据T4模板解决很方便。

第一步

创建GetSummery.ttinclude文件,网上的链接好多都失效,有些还放在CSDN下载里面,积分点很高,为造福大家,现在放出文件内容,自己重命名为这个文件就好啦。

GetSummery.ttinclude是模板文件,为了实现EF框架添加数据库自动生成实体注释。

第二步

把GetSummery.ttinclude文件放到Model1.edmx同一级目录,当然也可以放到其他路径,为了方便放到同一级目录。

第三步

打开GetSummery.ttinclude文件,修改GetSummery.ttinclude连接数据库的字符串改为"ConnStr"(大概在21行左右),prioviderName属性必须要有哦。此处的字符串内容应与Web.config中数据库连接方式一致或者与EF中的app.config一致,此处小编我就入了一个坑,一直报错。

  1. <add name="ConnStr" connectionString="data source=.;initial catalog=db;user id=sa;password=xxx;" providerName="System.Data.SqlClient" />

第四步

打开EF项目文件所在的tt文件

第五步

在tt头部添加 <#@ include file="GetSummery.ttinclude" #>

第六步

加载自定义TT文件用来获取数据库表备注和字段备注说明

在TT文件里搜索(28行左右):<#=codeStringGenerator.UsingDirectives(inHeader: false)#>

把代码添加<#=codeStringGenerator.UsingDirectives(inHeader: false)#>到下面

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

第七步

再次搜索(76行左右):<#=codeStringGenerator.Property(edmProperty)#>, 在它上方插入代码:

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

第八步

保存TT文件,就基本上完成了,它会自动更新数据库里的各个实体

效果图如下 :

有需要的小伙伴们,可以试试,感觉很方便。

weinxin
微信公众号
博客微信公众号,欢迎关注。
不忘初心 牢记使命

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: