使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能

在以往的开发过程当中,我会经常选择EF框架作为底层数据结构,EF为我们提供了很好的ado.net数据访问机制,他覆盖了数据链接,linq等多方面内容,而且当我们使用数据库优先或者code first的时候都体现出明显的优势。

  1. 一键生成实体,免除手写model的烦恼。
  2. 实时更新数据结构,使数据库与model保持高度一致。
  3. 提供多种底层数据的访问方法。
  4. 优雅的语法,对于我这种喜爱偷懒的程序猿是一大福音。

然而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

时间: 2025-01-12 03:42:12

使用T4模板为EF框架添加实体根据数据库自动生成字段注释的功能的相关文章

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

网上有一个解决方法如下: http://www.cnblogs.com/stone_w/archive/2012/10/25/2738345.html 不过我试了下没解决太麻烦了 而且一旦EF要重新生成又的重新弄. 后来我查询 了一下资料,可以运用T4模板来解决这个问题. 1.  下载文件GetSummery.ttinclude,这里我提供了,大家去下载:下载 2.  把我们下载下来的文件解压,将解压出来的文件放入解决方案中 3. 修改下app.config,添加一个连接字符串: <add na

使用T4模板为EF框架添加数据库实体注释(转)

1. 下载文件GetSummery.ttinclude2. 把我们下载下来的文件解压,将解压出来的文件放入解决方案中3. 修改下app.config,添加一个连接字符串: <add name="MyConn" connectionString="data source=.;initial catalog=db;user id=sa;password=xxx;" providerName="System.Data.SqlClient" /&g

SpringBoot2.0系列教程(六)Springboot框架添加Swagger2来在线自动生成接口的文档+测试功能

Hello大家好,本章我们添加Swagger2来在线自动生成接口的文档+测试功能.有问题可以联系我[email protected].另求各路大神指点,感谢 一:什么是Swagger Swagger是一款通过我们添加的注解来对方法进行说明,来自动生成项目的在线api接口文档的web服务. 二:添加Swagger2依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swag

T4 模板自动生成带注释的实体类文件 - 只需要一个 SqlSugar.dll

生成实体就是这么简单,只要建一个T4文件和 文件夹里面放一个DLL. 使用T4模板教程 步骤1 创建T4模板 ,一定要自已新建,把T4代码复制进去,好多人因为用我现成的T4报错(原因不明) 点击添加文件,选择[ 运行时文本模版](后缀为 .tt)取个名字点确定. 步骤2 设置当前T4所需要的序集并且引用 SqlSugar.dll 编写连接数据库代码 调用SqlSugar生成实体函数,填写参数. 图片看不清楚看下面代码 <#@ template debug="false" host

通过T4模板解决EF模型序列号的循环引用问题

在模型的T4模板(如model.tt)中插入如下代码,这样由模板生成的模型代码中的导航属性将自动带有[JsonIgnore]标识,不会被序列化 1. 添加命名空间的引用 找到以下代码,添加using Newtonsoft.Json; BeginNamespace(code);#>using Newtonsoft.Json;<#=codeStringGenerator.UsingDirectives(inHeader: false)#> 2.为导航属性添加JsonIgnore标签 找到以下

C# CodeFirst(EF框架)代码优先创建数据库

namespace WebEF.Model{ public class ModelContext:DbContext //继承DBcontext 来自EF框架 { public ModelContext() : base("name=配置文件名") { //读取配置文件 /*配置文件的设置格式 <connectionStrings> <add name="配置文件名" connectionString="Data Source=(. .l

EF框架之CodeFirst创建数据库

CodeFirst是Entity Framework4.1后新增的一种生成模式,在这种方式下,你不需要在DBMS中创建数据库,也无需在VS中画实体模型了,你要做的仅仅是写写代码即可由ORM框架自动创建模型和数据库,非常的方便和简单(由于开发人员只是编写代码,不关心数据库的具体结构,因此也有人把这种方式叫做CodeOnly的). 下面就以一个简单的例子演示一下如何使用CodeFirst生成数据库. 一.新建一个项目并添加必要的引用. 二.编写代码. 1在项目中添加两个实体类和一个数据上下文类如下图

Hibernate框架 —— 实体类的自动生成

一: hibernate框架 框架在一定程度上可以理解为一个半成品. Hibernate框架是对数据库进行操作,完成数据持久化得重任. 二: 配置 使用hibernate 需要先下载hibernate.如果要下载最新版的可以去官网下载,而对于历史版本,官网中好像很难找到,不过以下地址可是试试的哦! -> 3.0及以上版本 ->4.0及以上版本 不过在下使用的是3.3.2版本的.另外再说说各版本的意思:    rc 版--发布候选版,表示可能有bug,内容不会有很大的变动    ga 版--稳定

Maven项目中,使用mybatis,根据数据库自动生成pojo实体类、dao、mapper

一.首先,用eclipse创建一个maven项目. 二.其次,在pom.xml文件下,加入如下插件配置: <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.ap