zoukankan      html  css  js  c++  java
  • EF架构~为EF DbContext生成的实体添加注释(T5模板应用)(转载)

    转载地址:http://www.newlifex.com/showtopic-1072.aspx

    最近新项目要用Entity Framework 6.x,但是我发现从数据库生成模型时没有生成字段的注释,在网上好是一番查找,终于找到解决方案了。分享下: 第一步,让数据库注释映射到EDMX模型上   网上找到了EFTSQLDocumentation.Generator.exe的相关方法,但按照操作后,死活没有字段说明信息,多方查证,最终发现是xmlns的命名空间不对导致的,程序中给写死了,没法用。自己就修改了下,变成可视化直接操作的windows应用程序。代码也很简单。拿来直接用就行了。(看附件)
    第二步,修改DBContext的Model的T4模版
    首先为类添加注释: 找到这行代码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>
    再加上属性注释 找到这行代码  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)#>
    保存t4模板就可以了。 最终结果如下:

    参考资料:
    http://www.th7.cn/Program/net/201307/144865.shtml
    http://www.cnblogs.com/rober0371/p/3179769.html
     
    事实上,这TT模版加注释的原理就是通过读EDMX文件(是个XML文件)的相关注释内容来为POCO实体类加注释的,如果EDMX里没有注释,这个数据库注释也无法加上来,相关数据库与EDMX注释同步文章,可以看这篇文章EF架构~将数据库注释添加导入到模型实体类中
  • 相关阅读:
    java 算法最长连续递增子序列
    java 算法最长连续递增序列
    最大连续子数组和(Java)
    mysql时间序列与窗口函数
    CSS控制br高度
    小知识随手记(九):兄弟选择器(~和+)区别
    VUE组件递归实现自定义目录及拖拽效果
    VUE的插件解析
    VUE的mixin混入解析
    VUE高阶组件解析
  • 原文地址:https://www.cnblogs.com/yxlblogs/p/3594449.html
Copyright © 2011-2022 走看看