IOC 与实体框架
我正在尝试将 Unity 框架与实体框架结合使用。让我解释一下这个场景。假设我有一个包含 5 个表的数据库。我将有 5 个接口,每个接口对应于数据库中的一个表,并将表的每个字段作为成员。现在我希望我的实体框架生成的类实现相应的表接口。所有导航属性都应返回对象作为界面引用。这应该允许我使用 Unity 框架解析这些实体,以允许任何人在不破坏所需代码的情况下扩展 EF(数据)实体。这可能吗?
I am trying to make use of Unity Framework with Entity Framework. Let me explain the scenario. Let's say I have a Database with 5 tables. I will have 5 interfaces each of them corresponding to one table in Database having each field of table as a member. Now I want my Entity Framework generated classes to implement corresponding table interface. All navigational properties should return objects as interface references. This should allow me to resolve these entities using Unity framework to allow any one to extend EF(data) entities without breaking required codes. Is this possible?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
不,没有使用 IoC 容器解析实体的扩展点。 EF 将始终处理持久化实体的实例创建。 Morover EF 映射必须使用类而不是接口。
您只能处理
ObjectContext
上的ObjectMaterialized
事件,并为创建的实体提供一些额外的初始化。您可以尝试通过实现自定义 T4 模板并包含一些约定(例如接口名称始终是 I + 实体名称)来添加接口,但仍然没有 IoC。
No there is no extensibility point for resolving entities with IoC container. EF will always handle instance creation of persisted entities. Morover EF mapping must work with classes not interfaces.
You can only handle
ObjectMaterialized
event onObjectContext
and provide some additional initialization of created entities.You can try to add interfaces by implementing custom T4 template and including some convention (like name of the interface is always I + name of the entity) but still without IoC.