首页 > 解决方案 > 在 EF6 中使用 linq 进行查询是在数据库具有更新值时给出旧值

问题描述

在 EF6 中使用 Linq 查询是在数据库具有更新值时提供旧tblReferenceNumber值新记录。

AuthDBEntities db = New AuthDBEntities()
tblReferenceNumber LRefNum = db.tblReferenceNumber.OrderByDescending(ab => ab.ID).First();
string lrNum = LRefNum.ReferenceNumber;

为什么我得到旧值?我该如何解决?

标签: c#asp.netentity-frameworklinq

解决方案


每个实例DbContext都有一个缓存。如果您使用的实例db与上次获取该记录时相同,那么您最终将获得缓存的数据。

您可以使用:

db.Entry(LRefNum).Reload();

强制它获取新数据。

有关此处缓存的更多信息:http: //codethug.com/2016/02/19/Entity-Framework-Cache-Busting/

但这也提出了一个问题,即为什么您使用相同的实例两次获得相同的记录db。您是否可能声明db为静态?


推荐阅读