4.1分部类初始化

本文关键字:初始化 1分 | 更新日期: 2023-09-27 18:06:10

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

4.1分部类初始化

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

partial void OnInitialized();

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

partial class SomeEntity
{
    partial void OnInitialized()
    {
        // custom initialization code goes here
    }
}

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

  1. 添加基类:

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

     public partial class Call: CallBase
     {
        protected owerride void Initialize();
        {
       ...
         }
     }
    

缺点是Initialization方法将在所有集合生物之前调用。