【发布时间】:2019-08-22 16:13:39
【问题描述】:
我确定这是重复的,但在搜索互联网后我找不到问题。因此,如果这是重复的,请指出正确的。
问题: 如何让实体框架拾取数据库中实体中从另一个来源发生的更改。
由于 DbContext 缓存未更新,我遇到了很多此类问题。
示例:
假设我有 2 台具有相同架构的服务器。两台服务器一起工作并且都使用表Person。
- 服务器 A 创建一个年龄为 21 岁的人
Jack,并将其保存到数据库中。Jack缓存在服务器 A 的 DbContext 中。 - 服务器 B 在服务器 A 创建数据库后从数据库中获取
Jack。然后,服务器 B 将Jack更新为 22 岁,并将其保存到数据库中。 - 向服务器 A 发出对
Jack的请求。因此,服务器 A 的 DbContext 以缓存中的Jack版本进行响应...年龄仍为 21 岁。
我很难相信服务器 A 的 DbContext 没有办法重新获取记录。我觉得这种能力应该融入到实体框架中。如果没有,那我还有什么其他选择?
我想到的一个选项是告诉实体框架不要使用缓存。这可能吗?
【问题讨论】:
-
通常 DbContext 会很短暂,这不是什么大问题吗?这可能会有所帮助 - docs.microsoft.com/en-us/ef/core/saving/concurrency
标签: c# entity-framework caching cache-invalidation