两个上下文相同的实体

本文关键字:实体 上下文 两个 | 更新日期: 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()它们,这对我来说似乎是一种代码气味。