通过修改EF 自动生成的T4模板来实现实体类继承基类

在使用EF开发的时候,我们可能会让所有的实体类去继承一个Model的基类(BaseEntity)

好不容易手动把所有的实体类继承了BaseEntity类,也把所有的公共字段(如:Id,CreateDate,IsRemove)从实体类中去除

但是一保存T4 模板的 .tt文件,之前做的努力就会白费

所以我们通过修改T4 模板来实现我们想要的功能,保存.tt 文件实现实体类中没有公共字段,自动继承BaseEntity

 

实体类基类BaseEntity

 public class BaseModel
 {
     public int Id { get; set; }
     public bool IsRemove { get; set; }
     public DateTime CreateTime { get; set; }
 }

继承BaseEntity 的实体类

public partial class Fan : BaseModel
{
    public System.Guid UserId { get; set; }
    public System.Guid FocusUserId { get; set; }
    public bool IsRemoved { get; set; }

    public virtual User User { get; set; }
    public virtual User User1 { get; set; }
}

要修改的 Model1.tt 文件(要改两个地方,改的时候搜索参数名和方法名就可以)

<#
        var simpleProperties = typeMapper.GetSimpleProperties(entity);
        if (simpleProperties.Any())
        {
            foreach (var edmProperty in simpleProperties)
            {
                //遇到 BaseEntity 中的属性就直接跳过
                if (edmProperty.Name=="Id"||edmProperty.Name=="IsRemove"||edmProperty.Name=="CreateTime") 
                {
                    continue;
                }
#>
    <#=                    codeStringGenerator.Property(edmProperty)#>
<#
            }
        }
#>
public string EntityClassOpening(EntityType entity)
{
    return string.Format(
       CultureInfo.InvariantCulture,
       "{0} {1}partial class {2}:BaseEntity",//这里写继承 BaseEntity
       Accessibility.ForType(entity),
       _code.SpaceAfter(_code.AbstractOption(entity)),
       _code.Escape(entity)
     );
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值