【问题标题】:Entity Framework DbContext detect changes from outsideEntity Framework DbContext 检测来自外部的更改
【发布时间】:2019-08-22 16:13:39
【问题描述】:

我确定这是重复的,但在搜索互联网后我找不到问题。因此,如果这是重复的,请指出正确的。

问题: 如何让实体框架拾取数据库中实体中从另一个来源发生的更改。

由于 DbContext 缓存未更新,我遇到了很多此类问题。

示例: 假设我有 2 台具有相同架构的服务器。两台服务器一起工作并且都使用表Person

  1. 服务器 A 创建一个年龄为 21 岁的人 Jack,并将其保存到数据库中。 Jack 缓存在服务器 A 的 DbContext 中。
  2. 服务器 B 在服务器 A 创建数据库后从数据库中获取Jack。然后,服务器 B 将 Jack 更新为 22 岁,并将其保存到数据库中。
  3. 向服务器 A 发出对 Jack 的请求。因此,服务器 A 的 DbContext 以缓存中的 Jack 版本进行响应...年龄仍为 21 岁。

我很难相信服务器 A 的 DbContext 没有办法重新获取记录。我觉得这种能力应该融入到实体框架中。如果没有,那我还有什么其他选择?

我想到的一个选项是告诉实体框架不要使用缓存。这可能吗?

【问题讨论】:

标签: c# entity-framework caching cache-invalidation


【解决方案1】:

我认为您将 DbContext 用作单例实例。如果您每次调用 DbContext 时都对其进行初始化,则不会发生此问题。但是更多你可以找到更多关于它的细节here

【讨论】:

  • 我刚刚修改了我的问题,特别是 scanario 中的步骤。我想你可能误解了它。 Jack 是数据库中的一行,但有两台服务器具有自己的 DbContext,因此,它们在内存中拥有自己的 Jack 对象。假设两台服务器甚至不知道彼此存在。
  • @IanKirkpatrick 哦,现在我明白你的问题了,我更新了答案。
  • 如果您在Edit 部分之后删除所有内容,我会将其标记为已接受。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-19
  • 2016-05-08
  • 1970-01-01
  • 1970-01-01
  • 2022-11-21
  • 2020-01-05
  • 1970-01-01
相关资源
最近更新 更多