在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)。您将能够访问您的对象,不幸的是该对象已经实现。根据您的需求,您也许可以在这里破解一些有趣的行为。

顺便说一句,这句话对我来说毫无意义:

当为某些业务规则构建存储库时,需要将其存储到我的域对象中。

这与持久性无知域对象不兼容吗?

08-04 17:16