我正在使用Entity Framework来访问我的数据库,我希望使用以下代码获得单行(或者说整个表):
using (var db = new dbContext())
{
var user= (from o in db.AspNetUsers
where o.Email == "email@domain.tld"
select o).FirstOrDefault();
var userList = db.AspNetUsers.ToList();
}
但是当我在这两个查询之后添加断点时,只有“无法评估表达式”错误,或者存储在user
和userList
中的这些错误的列表。我被卡住了,无法弄清楚,为什么会这样。
我已经做了一些研究,有人说它可能是Visual Studio的“代码优化”。但我想,当您在调试模式下启动应用程序时,代码未经过优化。此外,我还没有找到停用代码优化的选项。
答案 0 :(得分:1)
好的,调试器表达式评估wrt确实破坏了一些东西。 IQueryable的。
尝试快速观察:
db.Table.FirstOrDefault(i => true) // works
db.Table.FirstOrDefault(i => i.Id == 3) // "The debugger is unable to evaluate this expression"
db.Table.ToList().FirstOrDefault(i => i.Id == 3) // woks
db.Table.ToList().AsQueryable().FirstOrDefault(i => i.Id == 3) // crashes msvcmon.exe !!!
我很确定这是一种回归。