在构造函数之后运行几个过程

本文关键字:几个 过程 构造函数 之后 运行 | 更新日期: 2023-09-27 18:08:00

我正在使用c#和实体框架5。当我创建模型时,EF5生成几个类,例如像

这样的用户类
public class User{}

这个类是每次我修改模型时自动生成的然后我创建另一个类作为局部,如

public partial class User{}

添加几个函数、属性或过程。我的问题是,当类实例化时,我需要运行一个过程。

我想象像

public class User {
    public User(){
    }
}
public partial class User()
{
    public void OtherProc(){}
}

OtherProc()在构造函数完成后自动调用。

谢谢你的帮助!

在构造函数之后运行几个过程

您应该使用ObjectContext。ObjectMaterialized事件,以便在实体创建后执行代码。但是,只有当对象从数据库加载时,它才会工作。因此,完整的解决方案应该包括某种处理实体初始化操作的业务逻辑层。下面是一个代码片段:

AdventureWorks2012Entities context = new AdventureWorks2012Entities();
((IObjectContextAdapter)context).ObjectContext.ObjectMaterialized += (sender, e) => 
{
    //will fire for newly loaded entities
    if (e.Entity is User)
        InitNewUser((User)e.Entity);
};

//ObjectMaterialized won't fire when you create the object
context.Person.Add(InitNewUser(new User()));

初始化代码:

private static User InitNewUser(User user)
{
    //Your initialization code
    user.OtherProc();
    return user;
}