在使用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)
);
}