我首先使用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。
有人得到了解决方案或完全不同的方法吗?
答案 0 :(得分:1)
使用Entity Framework对数据库建模时,在不同的DbContext
中相互共享项目实际上是EF实现的限制。问题在于使用代理的EF。也就是说,它实际上对您的类进行子类化,以监视您与数据库的交互。如果您将跟踪从一个DbContext
移动到另一个DbContext
,它会抱怨您附加的内容不存在 - 或者当前没有受到监控。
1方法是将它全部捆绑到1 .Detach()
- 问题解决了。
如果你真的想要将它们分开,你必须手动将实体从一个移动到另一个。您需要手动.Attach()
和{{1}},这对我来说似乎是一种代码味道。