EF架构~为EF DbContext生成的实体添加注释(T5模板应用)

相关文章系列

第八回  EF架构~将数据库注释添加导入到模型实体类中

第二十一回  EF架构~为EF DbContext生成的实体添加注释(T4模板应用)

第二十二回EF架构~为EF DbContext生成的实体添加注释(T5模板应用

嗨,没法说,EF4的TT模版加上注释后,升级到EF5的TT模版后,注释就不通用了,所以,还得再研究一下,然后把操作方法再分享出来,没辙的微软!

T4模版可能有些凌乱,这在T5模版里有了不错的改进,但我希望解决的问题在T5里并没有得到解决,那就是TT类文件自动得到EDMX模型的注释问题,可能大微的开发人员不需要实体注释吧,嗨!

1 先加上类注释

找到这行代码WriteHeader(codeStringGenerator, fileManager);

在它下面加上我们的代码:

string summary=string.Empty;
foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection))
{
    fileManager.StartNewFile(entity.Name + ".cs");
    BeginNamespace(code);
    if(entity.Documentation !=null && entity.Documentation.Summary!=null)
       summary=entity.Documentation.Summary;
     else
        summary=entity.Name;
#>

<#=codeStringGenerator.UsingDirectives(inHeader: false)#>
/// <summary>
/// <#=summary#>
/// </summary>
<#=codeStringGenerator.EntityClassOpening(entity)#>

同时保存TT模版文件,这时类的注释就已经加上了

2 再加上属性注释

找到这行代码   foreach (var edmProperty in simpleProperties)

在它下面加上我们的代码

  foreach (var edmProperty in simpleProperties)
         {
         if (edmProperty.Documentation != null && edmProperty.Documentation.Summary != null)
          {
           summary=edmProperty.Documentation.Summary;
          }
         else
          {
           summary="";
          }

#>
    /// <summary>
    /// <#=summary#>
    /// </summary>
    <#=codeStringGenerator.Property(edmProperty)#>

同时保存TT模版,这时我们的类属性注释就加好了

事实上,这TT模版加注释的原理就是通过读EDMX文件(是个XML文件)的相关注释内容来为POCO实体类加注释的,如果EDMX里没有注释,这个数据库注释也无法加上来,相关数据库与EDMX注释同步文章,可以看这篇文章EF架构~将数据库注释添加导入到模型实体类中

时间: 2024-10-12 17:35:14

EF架构~为EF DbContext生成的实体添加注释(T5模板应用)的相关文章

为EF DbContext生成的实体添加注释(T5模板应用)[转]

1 先加上类注释 找到这行代码WriteHeader(codeStringGenerator, fileManager): 在它下面加上我们的代码: string summary=string.Empty; foreach (var entity in typeMapper.GetItemsToGenerate<EntityType>(itemCollection)) {     fileManager.StartNewFile(entity.Name + ".cs");

【菜鸟看框架】——如何给EF实体添加注释

引言 在做图书馆项目的时候我们采用了EF实体架构自动生成实体,但是遇到一个很大的问 题就是在生成的实体中没有注释,我们都知道实体没有注释是非常痛苦的一件事情对于 开发的人来说,因为我们不能很快速的了解到底我们需要对那个属性进行操作,所以我 就在研究应该如何给生成的实体添加注释,下面给大家分享一下我的经验: 第一 手动添加(无效) 当开发人员告诉我让我给实体添加注释的时候,我就什么都没有多想,开始给我生成 的实体手动添加注释,当我们把我的15个实体的每一个字段都添加了以后,发现我的一 个数据库的字

使用 EF Power Tool Code Frist 生成 Mysql 实体

原文:使用 EF Power Tool Code Frist 生成 Mysql 实体 1,在要生成的项目上右键   2,   3,   4,   5,  生成后的效果     已知问题: 1,在Mysql数据表中 tinyint(1) ,会被映射成为 C# bool ,这样造成一些数据信息的丢失. 这个问题应该是EF 工具的问题,暂时没有找到解决方案.      手工去修改生成的实体是不经济的,下次再更新时候,又会变成 bool型 .      所以解决的办法就是修改数据库字段型 ,一般情况下,

EF架构~基于EF数据层的实现

回到目录 之前写过关于实现一个完整的EF架构的文章,文章的阅读量也是满大的,自己很欣慰,但是,那篇文章是我2011年写的,所以,技术有些不成熟,所以今天把我的2014年写的EF底层架构公开一下,这个架构比2011年的有了很大程度的提高,主要在接口规范,查询规范上,并引入了排序功能,两步对完善了EF对数据的批量操作,可以说,这次的架构是很有看点的. 一 一个基础操作接口 /// <summary> /// 基础的数据操作规范 /// 与ORM架构无关 /// </summary> /

EF架构为实体模型添加注释

近期做项目,用的是EF的架构,发现自动生成的实体没有注释,所以总结如下方法 1.在edmx中添加注释 1.1类注释 选中实体,打开属性,找到"文档"选项,在"摘要"位置添加类注释,如下图: 1.2属性注释 同类注释,打开属性,找到"文档"选项,在"摘要"位置添加属性注释,如下图: 2.修改tt模版 打开Model.tt文件 2.1添加类注释 找到图中的位置,对t4模板做如下修改 代码复制: string summary=str

项目中 2个或者多个EF模型 表名称相同会导致生成的实体类 覆盖的解决方法

场景:  2个数据库, 一个新,一个旧,  把旧的 数据库中的数据,导入到新的数据库中,  使用到了2个 EF实体模型, 新数据库 和 旧数据库中的表,有的名称是相同的 (但是结构是不同的) 旧的数据库中的 tb_area 表,只有2个字段 新数据库中的 tb_area 有很多字段  ,结果新数据库里面的 表,由于和旧数据库的表 重名,导致旧数据库里面的  表生产的cs文件 没有了, 只剩下新数据库中的表实体   那么现在问题就来了,我要调用旧表里面的 model 实体模型,怎么拿呢? 拿不到了

EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~终结~配置的优化和事务里读写的统一

回到目录 本讲是通过DbCommand拦截器来实现读写分离的最后一讲,对之前几篇文章做了一个优化,无论是程序可读性还是实用性上都有一个提升,在配置信息这块,去除了字符串方式的拼接,取而代之的是section数组,这样在修改配置时更加清晰了:而实用性上,彻底改变了读和写不能共用一个仓储对象的缺点,并且在一个事务里可以读写并存,并为了数据的一致性,使事务里的curd操作指向主库,这一点很重要! 前几篇文章的目录 EF架构~通过EF6的DbCommand拦截器来实现数据库读写分离~再续~添加对各只读服

[原创]EF架构随心所欲打造属于你自己的DbModel

前言 我们都知道EF可以生成Dbmodel,系统生成的Model有时候并不是我们想要的,如何我们要生成自己的Model,那么久需要我们手动的去修改T4模版,T4是对“Text Template Transformation Toolkit”(4个T)的简称.如果你对T4不怎么了解可以去看蒋金楠(Artech)文章从数据到代码——基于T4的代码生成方式. 1.0先看看我们要达到的效果图吧 2.0首先我们来修改T4模版吧 打开T4模版,找到代码 WriteHeader(codeStringGener

使用EF 4.1的DbContext

DbContext简单用法 使用DbContext构造函数 1. Code First约定连接 namespace Magic.Unicorn{    public class UnicornsContext : DbContext    {        public UnicornsContext()        // C# will call base class parameterless constructor by default        {        }    }} 用