我的实体框架支持的项目在选择整个实体时返回过时的数据,但在仅从实体中选择一个字段时数据是最新的。
以下是步骤:
通过 EF/LINQ 查询:
var e = context.myEntity.First(x=>x.ID==ID); string n = context.myEntity.Where(x=>x.ID==ID).Select(x=>x.Name).First();
直接通过 SQL 更新数据库中的名称字段
然后通过 EF/LINQ 再次查询:
var e = context.myEntity.First(x=>x.ID==ID); string n = context.myEntity.Where(x=>x.ID==ID).Select(x=>x.Name).First();
e.Name
是以前的值,但是n
是最新的。
我们在调用之间重用相同的上下文。
使用 SQL 分析器,我可以确认即使数据过时,来自 EF 的 SQL 查询也会发生。
什么会导致这种情况?