我正在使用C#和Entity Framework 5.当我创建模型时,EF5会生成几个类,例如用户的类
def edit
@user = User.find(params[:id])
@relationships = @user.relationships.where('member = ?', true)
end
def update
@user = User.find(params[:id])
if @user.update_attributes(strong_params)
flash[:success] = "Updated"
redirect_to @user
else
render 'edit'
end
end
每次修改模型时都会自动生成此类,然后创建另一个类,如
public class User{}
添加多个功能,属性或程序。我的问题是我需要在实例化类时运行一个过程。
我想像
public partial class User{}
并在构造函数完成时自动调用public class User {
public User(){
}
}
public partial class User()
{
public void OtherProc(){}
}
。
感谢您的帮助!
答案 0 :(得分:0)
您应该使用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;
}