繁体   English   中英

在数据库中更新值时,在EF6中使用linq查询给出旧值

[英]Querying using linq in EF6 is giving old values while database is having updated value

在EF6中使用Linq进行查询会在数据库具有更新值时给出旧值在下面的第一次运行代码中,它可以正常工作,但是在表tblReferenceNumber获取新行之后,查询仅返回旧值,而我希望它可以检索包括新记录。

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

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

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

您可以使用:

db.Entry(LRefNum).Reload();

强制它获取新数据。

有关缓存的更多信息,请参见: http : //codethug.com/2016/02/19/Entity-Framework-Cache-Busting/

但是,这也引发了一个问题,为什么用相同的db实例两次获得相同的记录。 您是否将db声明为静态?

当您使用.First()时,您会实现此查询并将数据加载到内存中。 因此,当您尝试从LRefNum获取值时,您引用的是内存中的数据而不是数据库。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM