两个上下文相同的实体

时间:2014-05-28 13:47:14

标签: c# ef-code-first entity-framework-6

我首先使用EntityFramework 6代码,我试图解决两个上下文和重叠实体的问题。

示例:

Context c1 has the entities A and B
Context c2 has the entities B and C

Entity B is in c1 and c2 the same entity
Entity B has a many to many relation to entity A
Entity B has also a many to many relation to entity C

     c1      c2
  (A -- B)(B -- C)

我试图通过在子类的第二个上下文中继承实体B来解决这个问题,并在那里添加与实体C的关系。

在我目前的方法中,EF告诉我数据库已经有了实体B(来自c1的update-database),它将停止更新上下文c2。

有人得到了解决方案或完全不同的方法吗?

1 个答案:

答案 0 :(得分:1)

使用Entity Framework对数据库建模时,在不同的DbContext中相互共享项目实际上是EF实现的限制。问题在于使用代理的EF。也就是说,它实际上对您的类进行子类化,以监视您与数据库的交互。如果您将跟踪从一个DbContext移动到另一个DbContext,它会抱怨您附加的内容不存在 - 或者当前没有受到监控。

1方法是将它全部捆绑到1 .Detach() - 问题解决了。

如果你真的想要将它们分开,你必须手动将实体从一个移动到另一个。您需要手动.Attach()和{{1}},这对我来说似乎是一种代码味道。

相关问题