gpt4 book ai didi

c# - 两个上下文相同的实体

转载 作者:太空宇宙 更新时间:2023-11-03 13:21:39 25 4
gpt4 key购买 nike

我首先将 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。

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

最佳答案

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

一种方法是将其全部捆绑到 1 个 DbContext - 问题已解决。

如果你真的想在物理上将它们分开,你将不得不手动将实体从一个移动到另一个。您将不得不手动 .Detach().Attach() 它们,这对我来说似乎是一种代码味道。

关于c# - 两个上下文相同的实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23913463/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com