• EF生成实体模板改良


    也许介绍的方法并不是完美的解决方法

    web工程里添加这两项

    里面会生成两个模板文件 上下文模板和实体类模板,现在主要对实体类模板进行改良

    1.讲using 放在文件头

    <#=codeStringGenerator.UsingDirectives(inHeader: true)#>  false改为true

    添加

    public void WriteHeader(CodeStringGenerator codeStringGenerator, EntityFrameworkTemplateFileManager fileManager)
    {
        fileManager.StartHeader();
    #>
    using System;
    using System.Collections.Generic;
    using System.ComponentModel.DataAnnotations;
    using System.ComponentModel.DataAnnotations.Schema;
    <#=codeStringGenerator.UsingDirectives(inHeader: true)#>
    <#+
        fileManager.EndBlock();
    }

    2.去partial

    搜索partial替换为空

    3.改命名空间

    namespace <#=code.EscapeNamespace(codeNamespace)#> 将这句直接替换成自己的命名空间

    4.改可空类型的写法 我们更习惯与int?的这种风格 比较简单就不介绍了

    5.添加主键Key特性

    这里面将ID统一命名为主键了所以采用了这个比对的效果,如果主键列不固定名称,可以在class最上面添加,也是可以的,不做介绍了

      public string Property(EdmProperty edmProperty)
        {
          if(_code.Escape(edmProperty)=="ID")
          {
          return   string.Format(
                CultureInfo.InvariantCulture,
                @"{5}
        {6}
        {0} {1} {2} {{ {3}get; {4}set; }}",
                Accessibility.ForProperty(edmProperty),
                _typeMapper.GetTypeName(edmProperty.TypeUsage),
                _code.Escape(edmProperty),
                _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                _code.SpaceAfter(Accessibility.ForSetter(edmProperty)),"[Key]","[DatabaseGeneratedAttribute(DatabaseGeneratedOption.None)]");
          }
          else
          {
            return string.Format(
                CultureInfo.InvariantCulture,
                "{0} {1} {2} {{ {3}get; {4}set; }}",
                Accessibility.ForProperty(edmProperty),
                _typeMapper.GetTypeName(edmProperty.TypeUsage),
                _code.Escape(edmProperty),
                _code.SpaceAfter(Accessibility.ForGetter(edmProperty)),
                _code.SpaceAfter(Accessibility.ForSetter(edmProperty)));
          }
        }

    6.添加Table特性

      public string EntityClassOpening(EntityType entity)
        {
            return string.Format(
                CultureInfo.InvariantCulture,
                @"{4}
    {0} {1}class {2}{3}",
                Accessibility.ForType(entity),
                _code.SpaceAfter(_code.AbstractOption(entity)),
                _code.Escape(entity),
                _code.StringBefore(" : ", _typeMapper.GetTypeName(entity.BaseType)),
                 "[Table(""+_code.Escape(entity)+"")]");
        }

    最后生成的实体如果格式不对其,可以快捷键设为对齐

    另外本人对模板并没有深入的研究,这些改良虽然满足了暂时的生成需求,但是也许方法并不正宗,仅此说明

  • 相关阅读:
    JavaEE——Struts(1)--Filter作为MVC的控制器 配置Struts2环境
    折叠菜单--实现左边目录,右边显示
    转载--竖向折叠菜单
    pest错误笔记
    JavaWeb--JQuery中的$(function())
    codeforces 440C. One-Based Arithmetic 解题报告
    codeforces 399B. Red and Blue Balls 解题报告
    codeforces 445B. DZY Loves Chemistry 解题报告
    2013级新生程序设计基础竞赛-正式赛 F 异或最大值 解题报告
    codeforces 441C. Valera and Tubes 解题报告
  • 原文地址:https://www.cnblogs.com/njcxwz/p/5864858.html
Copyright © 2020-2023  润新知