实体框架无法评估表达式

时间:2015-10-21 15:20:17

标签: c# entity-framework-5

如果我执行这部分代码:

var adressenDetailses = new KlippsTestEntities().AdressenDetails.Count();

变量adressenDetailses的值为961.(这意味着枚举具有值)

如果我想在调试期间检查IEnumerable AdressenDetails的值,那么Visual Studio会说

  

'对于功能评估,所有线程都必须执行'。

单击重新加载图标执行线程。现在Visual Studio说:

  

'无法评估表达式。该流程不受支持。   未知错误:0x80070057。'

有谁知道如何解决问题的答案?

1 个答案:

答案 0 :(得分:1)

实体框架很懒惰。

我的意思是这是一个好方法。它只会获取所需的数据来预先获取。任何链接值 - 例如链接/ FK到其他表 - 只有在被询问时才会获得。

这就是为什么当你调试时你会看到这种行为的原因,但如果你编写完整的代码并正常运行它会产生正确的值。

您可以使用Include行启用“预先加载”

var adressenDetailses = new KlippsTestEntities()
    .Include(x => x.AdressenDetails) //tells EF to eager load that link
    .Select(x=> x.AdressenDetails); //"I would only like to see data on the details"

var addressCount = adressenDetailses.Count();

现在您应该能够调试第一行并查看该对象的具体细节。

附注:您不需要添加.Select(x=> x.AdressenDetails);子句。