如果我执行这部分代码:
var adressenDetailses = new KlippsTestEntities().AdressenDetails.Count();
变量adressenDetailses
的值为961.(这意味着枚举具有值)
如果我想在调试期间检查IEnumerable
AdressenDetails
的值,那么Visual Studio会说
'对于功能评估,所有线程都必须执行'。
单击重新加载图标执行线程。现在Visual Studio说:
'无法评估表达式。该流程不受支持。 未知错误:0x80070057。'
有谁知道如何解决问题的答案?
答案 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);
子句。