我正在使用 EF 6.0,并且希望将自定义逻辑添加到 Model.edmx 文件生成的任何类的默认构造函数执行中/之后。发现在已弃用的 EntityObject 生成器版本中,每个生成的类中都有部分 void OnCreated 方法,可以在部分类中覆盖该方法以实现我想要的,但找不到任何主题,并且无法弄清楚如何在没有弃用方法的情况下执行此操作用法。例如,我生成了下一个项目的集合:
public virtual DbSet<AnswerOption> AnswerOptions { get; set; }
我的自定义生成的类是 AnswerOption
,我需要自定义它在 Model.cs 文件中生成的默认构造函数:
public partial class AnswerOption
{
public AnswerOption()
{}
}
或者至少在我的分部类中定义的默认构造函数调用之后执行一些代码
最佳答案
最终编辑 Model.tt T4 模板文件。删除了无参数构造函数生成的默认条件(对于我的情况是 34,35,64 行):
if (propertiesWithDefaultValues.Any() || collectionNavigationProperties.Any() || complexProperties.Any())
{
}
已添加
partial void OnConstructorConpletion();
生成每个实体类,并在无参数构造函数末尾调用它:
#>
public <#=code.Escape(entity)#>()
{
<#
//default T4 logic that was processing properties
#>
OnConstructorConpletion();
}
partial void OnConstructorConpletion();
<#
因此,T4 模板从问题样本中生成类的结果代码是:
public partial class AnswerOption
{
public AnswerOption()
{
OnConstructorConpletion();
}
}
关于c# - Entity Framework 6.0实体自定义构造函数逻辑实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31793997/