实体框架4.1部分类初始化

tah*_*hir 3 c# entity-framework partial-classes entity-framework-4.1

在实体Framework 4.1数据库中,首先在生成的c#类中有一个构造函数,那么我在哪里可以进行部分类自定义初始化?

svi*_*ick 7

据我所知,你的项目中有一个像Model.edmx这样的文件实际上并没有生成任何代码.然后你有Model.tt,这是EF 4.1实际用来生成代码的.你可以修改这个Model.tt.所以,如果你想为OnInitialized()每个生成的实体添加一个partial方法的调用,从它们的构造函数调用,在Model.tt的代码中找到构造函数(它的第一行看起来应该是这样的public <#=code.Escape(entity)#>()),添加调用OnInitialized()在构造函数的某处并声明部分方法:

partial void OnInitialized();
Run Code Online (Sandbox Code Playgroud)

使用"运行自定义工具"重新生成实体,您就完成了.您现在可以在非生成代码中执行以下操作:

partial class SomeEntity
{
    partial void OnInitialized()
    {
        // custom initialization code goes here
    }
}
Run Code Online (Sandbox Code Playgroud)

我不知道EF 4.1,所以有可能有更好的方法.