在数据库中具有更新值的情况下,在EF6中使用Linq查询将给出旧值
在下面的第一次运行代码中,它工作正常,但是在表2018-11-30 09:40:39.478559: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1115] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 2123 MB memory) -> physical GPU (device: 0, name: Quadro M2000M, pci bus id: 0000:01:00.0, compute capability: 5.0)
获取新行之后,查询仅返回旧值,而我希望它可以检索到包括新记录的
tblReferenceNumber
为什么我会得到旧的价值观? 我该如何解决?
答案 0 :(得分:0)
DbContext
的每个实例都有一个缓存。如果您使用的db
实例与上次获得该记录的实例相同,那么最终将获得缓存的数据。
您可以使用:
db.Entry(LRefNum).Reload();
强制其获取新数据。
有关此处缓存的更多信息:no destructors are called
但是,这也引发了一个问题,为什么使用相同的db
实例两次获得相同的记录。您是否可能将db
声明为静态的?
答案 1 :(得分:-1)
使用.First()时,将实现此查询并将数据加载到内存中。 因此,当您尝试从LRefNum获取值时,您引用的是内存中的数据而不是数据库中的数据。