在Entity Framework CTP5中是否可以通过IOC容器构造检索到的持久化实体?
我正在使用Ninject并将其与MVC紧密结合,但是当为某些业务规则构建服务时,我需要将某些服务注入到我的域对象中。
我宁愿使用构造函数注入,也不愿使用方法或属性注入。
最佳答案
我不确定您到底想在这里完成什么,但是EF几乎没有可扩展性。最好的办法是挂接到由ObjectContext触发的ObjectMaterialized事件。在CTP5中,您需要像这样在DbContext的构造函数中强制转换DbContext:
((IObjectContextAdapter)this).ObjectContext.ObjectMaterialized +=
this.ObjectContext_OnObjectMaterialized;
然后实现您的功能
ObjectContext_OnObjectMaterialized(object sender, ObjectMaterializedEventArgs e)
。您将能够访问您的对象,不幸的是该对象已经实现。根据您的需求,您也许可以在这里破解一些有趣的行为。顺便说一句,这句话对我来说毫无意义:
当为某些业务规则构建存储库时,需要将其存储到我的域对象中。
这与持久性无知域对象不兼容吗?