实体框架4.1数据库第一,在生成的c#类中有一个构造函数,那么我可以在哪里做我的部分类自定义初始化?实体框架4.1部分类初始化
3
A
回答
7
据我了解,您的项目中有一个类似Model.edmx的文件,它实际上并不生成任何代码。然后你有Model.tt,这是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,所以它可能是有一个更好的办法。
+0
它按预期工作,谢谢! – tahir
0
添加一个基类:
public class CallBase { protected CallBase() { Initialize(); } protected abstract void Initialize(); }
添加局部类实现在另一个文件
public partial class Call: CallBase { protected owerride void Initialize(); { ... } }
的缺点是,所述初始化方法将之前被叫所有收集生物。
相关问题
- 1. 充分利用实体框架(类型初始化除外)
- 2. 实体框架4.1代码优先 - 是否应初始化多个关系ICollections
- 3. 使用代码第一个实体框架初始化类
- 4. 实体框架4.1例外
- 5. 实体框架4.1和SQLite
- 6. 实体框架(4.1)关系
- 7. 实体框架4.1。从IDS
- 8. 实体框架4.1 - 选择
- 9. 实体框架4.1 - EFTracingProvider
- 10. 部分初始化基类
- 11. 实体框架部分类按ID /主键实例化
- 12. 实体框架数据库初始化:初始化新的Azure SqlDatabase时超时
- 13. 实体框架(实体类)序列化
- 14. 实体框架代码首先初始化外键
- 15. 实体框架数据库初始化者添加列
- 16. 实体框架工作数据库优先初始化
- 17. 实体框架数据库初始化 - 对于固定列表
- 18. 初始化实体框架上下文的最佳方法?
- 19. 实体框架数据库初始化失败
- 20. 实体框架中的数据库初始化代码优先
- 21. 为什么实体框架将实体生成为部分类?
- 22. 实体框架类实例化行为
- 23. 实体框架4.1的ObjectContext VS的DbContext
- 24. 实体框架4.1 InverseProperty属性和ForeignKey
- 25. 实体框架4.1 - 交换数据库
- 26. 实体框架4.1动态生成表
- 27. 实体框架4.1外键问题
- 28. 实体框架4.1虚拟属性
- 29. 了解实体框架4.1约定
- 30. 实体框架4.1 T4输出到IDbset
我刚试过,生成的类没有定义构造函数。 (我认为我使用的是EF 4.0) – svick
yes在4.0中可以,因此我创建了自己的构造函数,但是在4.1中,嵌套类型的类将创建一个构造函数来初始化嵌套字段 – tahir
不生成构造函数调用一些你可以实现的“partial”方法? – svick