两个上下文相同的实体
本文关键字:实体 上下文 两个 | 更新日期: 2023-09-27 18:05:28
我首先使用带有代码的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 的更新数据库(,它将停止更新上下文 c2。
有人得到了解决方案或完全不同的方法?
使用实体框架对数据库进行建模时,在不同DbContext
中相互共享项实际上是 EF 实现的限制。问题归结为使用代理的 EF。也就是说,它实际上用一些东西来子类你的类来监视你与数据库的交互。如果您将跟踪从一个DbContext
移动到另一个,它会抱怨您正在附加不存在的内容 - 或者当前未受到监控。
1 方法是将其全部捆绑到 1 个DbContext
- 问题已解决。
如果您真的想在物理上将它们分开,则必须手动将实体从一个移动到另一个。您必须手动.Detach()
并.Attach()
它们,这对我来说似乎是一种代码气味。