EF生成实体自动添加数据库字段注释

  我们在用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

原文地址:https://www.cnblogs.com/nevergiveup1115/p/10693389.html

时间: 2024-10-14 15:07:39

EF生成实体自动添加数据库字段注释的相关文章

一直想要的,如何让MVC模型不自动添加数据库字段

这个问题可能能弱智,但是困扰了我好长时间,网上也一直搜不到,今天偶然一个机会在外国的论坛上看见这个. 首先,我想要实现的是自动绑定下拉选项,网上搜到很多方法,但是大家都是用的ViewBag(ViewData)将实例化好的DropDownList放在里面然后传递到前台,我一开始也是这么做的,但是后来莫名其妙的就出错了,说是没有实例化对象. 后来我有看了一些官方文档,其中在ASP.NET Core 表单中的标记帮助程序"https://docs.microsoft.com/zh-cn/aspnet/

实体类与数据库字段不匹配问题,java.sql.SQLSyntaxErrorException: Unknown column &#39;xxx&#39; in &#39;field list&#39;

控制台报错 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: Unknown column 'user_name' in 'field list' ### The error may exist in panfeng/mapper/StudentMapper.java (best guess) ### The error may involve panfeng.mapper.StudentMapper.se

EF修改model自动更新数据库

最近用MVC+EF学习时遇到修改model后而数据库没更新报错,就在网上找关于数据迁移自动更新数据库的,折腾了大半天终于弄了出来 第一步:在程序包管理器控制台里: Enable-Migrations -ProjectName EF所在的项目名称 第二步:运行后会在字段生成Migrations文件夹,Migrations->Configuration.cs 类里把AutomaticMigrationsEnabled改为true(即设为model有改动自动更新数据库) 如有删除字段则要加 Autom

实体类与数据库字段的映射常见错误(at org.hibernate.property.BasicPropertyAccessor$BasicSetter.set)

严重: Servlet.service() for servlet springMVC threw exception java.lang.IllegalArgumentException at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.refl

Spring 注解实体类中非数据库字段属性

解决办法:在属性的get方法上加上一段注解标识它是临时属性,不是数据库字段就OK @Transient public List<Reverts> getChildList() { return childList; } public void setChildList(List<Reverts> childList) { this.childList = childList; } 记得导入的是:import javax.persistence.Transient;

EF生成实体模板改良

也许介绍的方法并不是完美的解决方法 web工程里添加这两项 里面会生成两个模板文件 上下文模板和实体类模板,现在主要对实体类模板进行改良 1.讲using 放在文件头 <#=codeStringGenerator.UsingDirectives(inHeader: true)#>  false改为true 添加 public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFile

使用EF生成数据模型,然后在数据库直接修改数据,前台刷新以后数据没有改变

sl5+wcf ria +ef 初学者水平 在sqlserver手动修改了数据库的数据以后,再到前台去刷新数据,发现数据没有变化,服务端返回和前台不一致 服务端代码 public IQueryable<Customer> GetCustomerByCustomerId(string customerId) { return this.ObjectContext.Customer.Where(e => e.CustomId == customerId); } 客户端更新按钮代码 priva

Sublime3 自动添加Python头部注释信息

1.新建一个插件(Tools --- Developer --- New Plugin)写入如下内容,并保存为 head.py import sublime, sublime_plugin import datetime class PyHeadCommand(sublime_plugin.TextCommand): def run(self, edit): self.view.run_command("insert_snippet", { "contents":&

Pycharm在创建py文件时,如何自动添加文件头注释(类似于钩子特性)?

File->settings->Editor->File and Code Templates->Python Script 添加以下代码: #!/usr/bin/env python # -*- coding: utf-8 -*- # @Time : ${DATE} ${TIME} # @Author : Aries # @Site : ${SITE} # @File : ${NAME}.py # @Software: ${PRODUCT_NAME} https://segmen