实体框架4.1部分类初始化

时间:2011-08-21 15:46:39

标签: c# entity-framework entity-framework-4.1 partial-classes

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

2 个答案:

答案 0 :(得分:7)

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

OnInitialized()

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

partial void OnInitialized();

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

答案 1 :(得分:0)

  1. 添加基类:

     public class CallBase
     {
            protected CallBase()
            {
                Initialize();
            }
    
            protected abstract void Initialize();
     }
    
  2. 在另一个文件中添加部分类实现

     public partial class Call: CallBase
     {
        protected owerride void Initialize();
        {
       ...
         }
     }
    
  3. 缺点是初始化方法将在所有收集生物之前调用。