c# - Entity Framework DbContext 检测来自外部的更改
问题描述
我确定这是重复的,但在搜索互联网后我找不到问题。因此,如果这是重复的,请指出正确的。
问题:我怎样才能让实体框架拾取从另一个来源发生的数据库中实体中的更改。
由于未更新 DbContext 缓存,我在这类事情上遇到了很多问题。
示例:假设我有 2 台具有相同架构的服务器。两台服务器一起工作并且都使用该表Person
。
- 服务器 A 创建
Jack
一个年龄为 21 岁的人,并将其保存到数据库中。Jack
缓存在服务器 A 的 DbContext 中。 - 服务器 B
Jack
在服务器 A 创建数据库后从数据库中获取。然后,服务器 BJack
将年龄更新到 22 岁,并将其保存到数据库中。 - 向服务器A 发出请求
Jack
。因此,服务器 A 的 DbContext 以Jack
缓存中的版本进行响应……年龄仍为 21 岁。
我很难相信服务器 A 的 DbContext 没有办法重新获取记录。我觉得这种能力应该融入到实体框架中。如果没有,那我还有什么其他选择?
我想到的一种选择是告诉实体框架不要使用缓存。这可能吗?
解决方案
我认为您将 DbContext 用作单例实例。如果您每次调用 DbContext 时都对其进行初始化,则不会发生此问题。但更多您可以在此处找到有关它的更多详细信息。
推荐阅读
- c# - 如何使用参数从命令行运行 Xunit 测试
- r - 使用序号在 data.frame 列中继续数字系列
- python - Django 部署后的服务器错误 (500)
- windows - C/C++ / Windows 10:如何枚举像 diskpart 这样的卷?
- maven - 将 Maven 插件用于 Sonatype OSS 索引时出现“未绑定 org.sonatype.ossindex.maven.common.ComponentReportAssistant 的实现”错误
- javascript - 从服务器获取精确的 ping(毫秒)
- python - 根据条件获取最小日期和最大日期之间的时间差
- ios - 仅当用户访问我的应用程序中的特定网站时,我如何才能显示警报?
- bash - 在 git diff 中查找带有文件名和行号的 TODO
- deployment - 如何强制停止jelastic 部署过程?