使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能
在以往的开发过程当中,我会经常选择EF框架作为底层数据结构,EF为我们提供了很好的ado.net数据访问机制,他覆盖了数据链接,linq等多方面内容,而且当我们使用数据库优先或者code first的时候都体现出明显的优势。
- 一键生成实体,免除手写model的烦恼。
- 实时更新数据结构,使数据库与model保持高度一致。
- 提供多种底层数据的访问方法。
- 优雅的语法,对于我这种喜爱偷懒的程序猿是一大福音。
然而entity framework在vs中生成的.edmx文件,会导致摘要(说明)为空的bug,具体bug信息为“没有元数据文档可用。”,导致我们表名打点去字段时,无法预知字段代表的含义,这在开发当中也是比较致命的,因为开发人员只能靠经验和推测判断,表、字段的含义,而不能直观的第一时间知道他们的用途,给开发带来了很多的不便。
网络上面有一个解决方法如下:
http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html
不过我试了下没解决太麻烦了 而且一旦EF要重新生成又的重新弄。
后来我查询 了一下资料,可以运用T4模板来解决这个问题。
废话不啰嗦,开始:
首先我们先下载一个文件GetSummery,这里我提供了,大家可以直接下载: 下载
我们在数据库建立一个表,并给表中字段添加说明,如图所示:
然后,我们创建一个解决方案,选择类库
继续,添加实体数据模型,具体步骤我就不演示了,大家设置好数据库,直接生成就可以了。
现在我们来看一下所生成的实体,大家可以看到并没有什么字段注释说明:
接来下就把我们下载下来的文件解压,将解压出来的文件放入解决方案中,如图所示:
接下来,我们修改下app.config
,操作很简单,添加一个连接字符串:
1
2
|
<add name="MyConn" connectionString="data source=.;initial catalog=db;user id=sa;password=xxx;" providerName="System.Data.SqlClient" />
<!-- 具体连接与EF的连接保持一致-->
|
然后我们修改model.tt
,在顶部位置加入代码:
1
|
<#@ include file="GetSummery.ttinclude"#>
|
加入的位置如图:
紧接着在模板中查找代码片段<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
的位置,在代码下插入:
1
2
3
|
/// <summary>
/// <#= getTableSummery(code.Escape(entity)) #>
/// </summary>
|
继续查找代码片段:<#=codeStringGenerator.Property(edmProperty)#>
的位置,在代码上方插入:
1
2
3
|
/// <summary>
/// <#= getColumnSummery(code.Escape(entity),code.Escape(edmProperty)) #>
/// </summary>
|
注意:前面的注释符号///不能少
这里放出一个我的截图,方便大家对照行号,确定大概位置:
到这里,就基本上完成了,去刷新一下你的实体模型edmx文件,你会发现字段的注释都自动加上去了。
本文转载至:http://jeffblog.sinaapp.com/archives/501
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?