首先在实体框架4.1数据库中,生成的c#类中有一个构造函数,那么我在哪里可以进行部分类自定义初始化?
答案 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)
添加基类:
public class CallBase
{
protected CallBase()
{
Initialize();
}
protected abstract void Initialize();
}
在另一个文件中添加部分类实现
public partial class Call: CallBase
{
protected owerride void Initialize();
{
...
}
}
缺点是初始化方法将在所有收集生物之前调用。