码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-06-13 14:19:28      阅读:122      评论:0      收藏:0      [点我收藏+]

标签:linq   注释   entity   

     引言

  在做图书馆项目的时候我们采用了EF实体架构自动生成实体,但是遇到一个很大的问

题就是在生成的实体中没有注释,我们都知道实体没有注释是非常痛苦的一件事情对于

开发的人来说,因为我们不能很快速的了解到底我们需要对那个属性进行操作,所以我

就在研究应该如何给生成的实体添加注释,下面给大家分享一下我的经验:

   第一 手动添加(无效)

  当开发人员告诉我让我给实体添加注释的时候,我就什么都没有多想,开始给我生成

的实体手动添加注释,当我们把我的15个实体的每一个字段都添加了以后,发现我的一

个数据库的字段的类型写错了,需要修改一下数据库,修改好数据库以后就开始从数据

库生成实体模型,然后我就哭了,因为我花费了将近半个小时写的注释都没有了,这才

意识到不不能通过手动添加,这样是非常徒劳的

  第二 修改实体模型(正在用)

  然后就在网上继续查找资料,最后了解到可以通过修改实体模型里面的tt模板来自动

添加实体的属性,下面就给大家分享一下这个操作过程:

  1、给实体模型添加摘要

    技术分享
  2、给实体中的属性添加摘要

            方法同上

  3、修改t4模板,添加了类头注释

    双击xxx.tt文件后,找到下面代码:

        技术分享

    将上面的代码用下面的代码代替:
      
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)#>
  
  4、修改t4模板,添加属性的注释

   技术分享
    
   将上面的代码用下面的代码代替
 
      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)#>

  5 修改t4模板,添加导航属性

 技术分享

 将上面的代码用下面代码代替:
 
<#
        foreach (var navigationProperty innavigationProperties)
        {
                     if(navigationProperty.Documentation != null &&navigationProperty.Documentation.Summary != null)
                     {
                     summary=navigationProperty.Documentation.Summary;
                     }
                     else
                     {
                     summary="";
                     }
#>
       /// <summary>
    /// <#=summary#>
    /// </summary>
   <#=codeStringGenerator.NavigationProperty(navigationProperty)#>
<#

 5、预览效果

  技术分享

 第三 将数据库中的注释直接生成实体注释(正在研究)

 我们会发现虽然在第二种方法的时候,我们也已经完成了对实体的注释的添加,但是我

们得首先修改实体模型的中的属性,我们可以利用和数据库的关系直接将数据库中的说

明直接添加到实体中,这种方法是比较难实现的,因为开发时间的原因没有深入的研

究,但是在以后的学习中一定会研究这个东西,到时候在给大家分享。

 小结

 我们在学习的过过程中会发现很多值得我们学习和研究的东西,每一个难题都会有解决

办法的,而在查询和尝试的过程中就是我们收获知识的时刻,所以我们在学习的时候不

能存有“将就”的心态,如果广大读者有更好的解决办法,欢迎留言交流。

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

标签:linq   注释   entity   

原文地址:http://blog.csdn.net/hao134838/article/details/46481987

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!