Entity Framework DbContext 检测来自外部的更改

Entity Framework DbContext detect changes from outside

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

问题: 我怎样才能 entity framework 拾取数据库中实体中从另一个来源发生的更改。

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

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

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

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

我想到的一个选择是告诉 Entity Framework 不要使用缓存。这可能吗?

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