【问题标题】:Which data sees a group of EntityManagers when one of them updates or saves changes?当其中一个更新或保存更改时,哪些数据会看到一组 EntityManager?
【发布时间】:2010-12-28 20:35:21
【问题描述】:

我对实体框架中的上下文有以下疑问:

假设存在三个上下文 d1、d2 和 d3。每个上下文都在应用程序执行流中的不同时刻(d3,d2 之后和 d2,d1 之后)实例化。如果应用程序逻辑修改了一些由 d2 管理的实体并执行了 d2.SaveChanges()(或任何暗示更新或创建的操作),那么在 d2.SaveChanges() 执行后 d3 和 d1 会看到更改吗?

您能否提供一些参考书目来支持您的答案?

【问题讨论】:

    标签: .net entity-framework orm entity-framework-4 .net-4.0


    【解决方案1】:

    只有在您从日期存储中刷新它们后才能看到它们。 d2 中的更改不会影响其他上下文。 d1 和 d3 包含您在 d2 中进行更改之前从数据库中检索到的状态数据。如果您想要最新状态,您必须自己刷新其中的数据。如果这是自动完成的,效率将不高。这也是为什么上下文的生命应该是短暂的。如果你持有它太久,它包含过时的实体。

    【讨论】:

    • 你能给我一些参考书目或链接吗?
    • 所以上下文就像某种事务一样?
    • msdn.microsoft.com/en-us/library/bb738470.aspx - 每个 ObjectContext 都有 ObjectStateManager,它保存从数据库中检索到的实体的本地副本。如果您在 d1 上下文中更改实体,则 d2 中的 ObjectStateManager 不会更改,它仍然保持相同的值。当然,这只有在 d2 检索到 d1 在修改之前修改的数据时才会发生。
    猜你喜欢
    • 2018-09-26
    • 2020-02-24
    • 2018-07-11
    • 2022-01-18
    • 2020-08-22
    • 2019-07-03
    • 1970-01-01
    • 1970-01-01
    • 2018-12-15
    相关资源
    最近更新 更多