当其中一个更新或保存更改时,哪些数据会看到一组 EntityManager?

Posted

技术标签:

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

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

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

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

【问题讨论】:

【参考方案1】:

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

【讨论】:

你能给我一些参考书目或链接吗? 所以上下文就像某种事务一样? msdn.microsoft.com/en-us/library/bb738470.aspx - 每个 ObjectContext 都有 ObjectStateManager,它保存从数据库中检索到的实体的本地副本。如果您在 d1 上下文中更改实体,则 d2 中的 ObjectStateManager 不会更改,它仍然保持相同的值。当然,这只有在 d2 检索到 d1 在修改之前修改的数据时才会发生。

以上是关于当其中一个更新或保存更改时,哪些数据会看到一组 EntityManager?的主要内容,如果未能解决你的问题,请参考以下文章

打开保存的文件,其中包含对富文本所做的更改

VueJS - V-for 在数据更新后不会重新渲染,需要刷新页面才能看到更改

列表数据更改时更新Android ListActivity?

当我们扩展 kubernetes 部署并更改其中一个 pod 或容器配置时会发生啥?

TextBox Binding TwoWay 直到焦点丢失 WP7 才会更新

每次更新 datagridview 时如何创建历史日志