如何在实体框架中识别DbContext?

Juan Pablo Gomez占位符图像

我在一个项目中有多个对象,并且由于未知原因,EF抛出异常:

“无法定义两个对象之间的关系,因为它们与不同的ObjectContext相关联”

我了解,但我的问题是:

如何识别对象的上下文?有一个ID?或者是其他东西 ?

威克多(Wiktor Zychla)

那是微妙的。很可能您有db上下文的两个不同实例,并且关系中的一个实体是使用上下文的第一个实例检索的,而另一个实体是使用上下文的另一个实例检索的。

这很容易发生。例如,在Web应用程序中,您可能具有带有请求生存期的上下文,但是您将实体存储在会话容器中。然后,在处理另一个请求时,您将从会话中获取实体,并尝试使用它来创建与当前上下文中另一个实体的关系。另一个示例-您具有Windows应用程序,并且已在每种表单上实例化了db上下文。然后,您从两个不同的上下文中获得实体。

最简单的解决方法是让ID在不同的上下文之间传递。而不是将实体放入会话中,而是在其中放置ID。而不是在表单之间传递实体,而是传递ID等等。

这样,当您创建关系时,您从一个上下文中获得一个实体,而从另一个上下文中获得该实体ID您使用id从当前上下文中检索实体,然后创建一个关系。

解决此问题的另一种方法是在上下文之间分离和重新附加实体。通常这是不必要的混乱。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章