我将Entity Framework与Oracle数据库结合使用。如果我创建像
这样的查询myLinqStatement.ToListAsync()
结果返回错误的数据。如果我将语句更改为
myLinqStatement.AsNoTracking.ToListAsync()
我得到了正确的数据。
我还检查了由myLinqStatement.ToListAsync()
生成的本机SQL查询。生成的SQL查询是正确的,因为我得到了正确的数据。
映射中是否存在问题?为什么它与AsNoTracking
一起使用?
谢谢!
答案 0 :(得分:2)
AsNoTracking
做的是检索数据而不将其附加到上下文,因此您对数据应用的任何更改都不会生效,除非您再次附加它以便EF知道它应该跟踪其更改。 / p>
从您创建上下文的那一刻起,您提供的代码片段不会显示整个图片,但是在您调用myLinqStatement.ToListAsync()
之前,代码的其他部分是否可能会改变数据?
正如你提到myLinqStatement.AsNoTracking.ToListAsync()
返回预期的数据,让我假设你的代码中有一些副作用AsNoTracking
根本不知道所以只返回它在db中找到的任何内容