存储库和两个上下文

时间:2015-07-06 23:01:54

标签: c# asp.net-mvc entity-framework repository-pattern

我正在使用Repository模式,因此每个域模型都有一个通用存储库和两个其他存储库。

enter image description here enter image description here

我有两个控制器; productControllercategoryController。 实际上,在categoryController我在productController中创建了类别,我将每个类别分配到所需的产品。因此,我必须在productController中使用这两个存储库。

enter image description here

我的问题是我有两个ObjectContext对象。当我想用新类别更新我的产品时,我收到此错误:

  

无法定义两个对象之间的关系,因为   它们附加到不同的ObjectContext对象。

enter image description here enter image description here

我该如何解决这个问题?

如何增强代码以防止出现此问题?

1 个答案:

答案 0 :(得分:2)

您应该将ObjectContext注入到存储库实例中,这样您就可以将同一个实例注入到两个存储库中并避免错误。

如果您使用的是IoC容器,则应该允许您指定它创建的实例的范围。如果您使用的是Autofac,则需要使用InstancePerRequest