使用Entity Framework时出现“无法评估表达式”错误

时间:2016-01-22 09:16:40

标签: c# entity-framework

我正在使用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();
}

但是当我在这两个查询之后添加断点时,只有“无法评估表达式”错误,或者存储在useruserList中的这些错误的列表。我被卡住了,无法弄清楚,为什么会这样。

我已经做了一些研究,有人说它可能是Visual Studio的“代码优化”。但我想,当您在调试模式下启动应用程序时,代码未经过优化。此外,我还没有找到停用代码优化的选项。

1 个答案:

答案 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 !!!

我很确定这是一种回归。