首页 > 解决方案 > Entity Framework DbContext 检测来自外部的更改

问题描述

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

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

由于未更新 DbContext 缓存,我在这类事情上遇到了很多问题。

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

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

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

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

标签: c#entity-frameworkcachingcache-invalidation

解决方案


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


推荐阅读