• 自定义T4模板去掉实体对象中的下划线


            在EF Power Tool 默认使用的T4模板中,如果数据库表有下划线,那么生成的实体也有下划线,但是我们实际使用的过程中,是不希望有下划线的,要解决这个问题,可以自定义这个T4模板,把生成的实体中的下划线去掉。具体的方法是:

             1、首先通过菜单生成默认的T4模板:

    image

             生成的模板如下:

    image

           2、在Entity.tt中加上一个类代码块,具体的语法参见T4模板的语法,添加代码如下:

    <#+
    //获取类名
    string GetClassName(string tableName)
    {
    return GetClassName(tableName,"");
    }
     
    //获取类名
    string GetClassName(string tableName,string lastStr)
    {
    string[] name = tableName.Split('_');
    string className = tableName;
    if(name.Length > 0)
    {
    className = name[name.Length - 1];
    }
     
    return className + lastStr;
    }
    #>
            然后找到相应的调用的地方,调用一下GetClassName方法即可。
           调用的方法是类似于下面这样的:
    foreach (var navProperty in efHost.EntityType.NavigationProperties.Where(np => np.DeclaringType == efHost.EntityType))
    {
        if (navProperty.ToEndMember.RelationshipMultiplicity == RelationshipMultiplicity.Many)
        {
     
        public virtual ICollection<<#= GetClassName(code.Escape(navProperty.ToEndMember.GetEntityType())) #>> <#= GetClassName(code.Escape(navProperty),"Entity") #> { get; set; }
     
        }
        else
        {
     
        public virtual <#= GetClassName(code.Escape(navProperty.ToEndMember.GetEntityType())) #> <#= GetClassName(code.Escape(navProperty),"Entity") #> { get; set; }
     
        }
    }

            然后重新生成代码,就可以了。

            使用EF Power Tools生成代码,还有一个问题没有解决,那就是生成的实体文件名,还是跟表名一样;如果表名中有下划线,那么实体类名也有下划线,不知道在哪里面修改这个文件的名称,让它没有下划线。如果有知道的同学,请告诉一声。

  • 相关阅读:
    MapReduce的自定义结果文件名OutputFormat
    MapReduce的Mapper端JOIN
    服务器配置 隐藏apache和php的版本
    mysqldump参数详细说明
    PHP漏洞全解(PHP安全性/命令注入/脚本植入/xss跨站/SQL注入/伪跨站请求/Session劫持/HTTP响应拆分/文件上传漏洞)
    apache nginx 通过 rewrite 设置 禁止执行PHP程序
    javascript 数组的知识整理
    is_uploaded_file函数引发的问题
    php 读取文件头部两个字节 判断文件的实际类型
    discuz 数据字典大全
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/3539000.html
Copyright © 2020-2023  润新知