Entity Framework DbContext 检测来自外部的更改
Entity Framework DbContext detect changes from outside
我确定这是重复的,但我在网上搜索后找不到问题。因此,如果这是重复的,请指出正确的那个。
问题:
我怎样才能 entity framework 拾取数据库中实体中从另一个来源发生的更改。
由于未更新 DbContext 缓存,我遇到过很多此类问题。
示例:
假设我有 2 个具有相同架构的服务器。两台服务器一起工作,都使用 table Person
.
- 服务器A创建了年龄为21岁的人
Jack
,并将其保存到数据库中。 Jack
缓存在服务器 A 的 DbContext 中。
- 服务器 B 在服务器 A 创建后从数据库中获取
Jack
。然后,服务器 B 更新 Jack
将年龄增加到 22,将其保存到数据库中。
- 向服务器 A 发出了对
Jack
的请求。因此服务器 A 的 DbContext 以其缓存中的 Jack
版本进行响应...年龄仍为 21。
我很难相信服务器 A 的 DbContext 没有办法重新获取记录。我觉得这种能力应该融入 Entity Framework。如果没有,那我的其他选择是什么?
我想到的一个选择是告诉 Entity Framework 不要使用缓存。这可能吗?
我认为您将 DbContext 用作单例实例。如果您每次调用 DbContext 时都初始化它,则不会发生此问题。但是更多你可以找到关于它的更多细节here.
我确定这是重复的,但我在网上搜索后找不到问题。因此,如果这是重复的,请指出正确的那个。
问题: 我怎样才能 entity framework 拾取数据库中实体中从另一个来源发生的更改。
由于未更新 DbContext 缓存,我遇到过很多此类问题。
示例:
假设我有 2 个具有相同架构的服务器。两台服务器一起工作,都使用 table Person
.
- 服务器A创建了年龄为21岁的人
Jack
,并将其保存到数据库中。Jack
缓存在服务器 A 的 DbContext 中。 - 服务器 B 在服务器 A 创建后从数据库中获取
Jack
。然后,服务器 B 更新Jack
将年龄增加到 22,将其保存到数据库中。 - 向服务器 A 发出了对
Jack
的请求。因此服务器 A 的 DbContext 以其缓存中的Jack
版本进行响应...年龄仍为 21。
我很难相信服务器 A 的 DbContext 没有办法重新获取记录。我觉得这种能力应该融入 Entity Framework。如果没有,那我的其他选择是什么?
我想到的一个选择是告诉 Entity Framework 不要使用缓存。这可能吗?
我认为您将 DbContext 用作单例实例。如果您每次调用 DbContext 时都初始化它,则不会发生此问题。但是更多你可以找到关于它的更多细节here.