2015-10-21 38 views
-2

调试期间IEnumerableAdressenDetails的值,则Visual Studio中说实体框架无法评价表达

'For the functionevalution all threads have to be executed'.

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

'The expression can not be evaluated. The process is not supported. Unknown error: 0x80070057.'

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

+0

您正在试图查看VS调试器中的KlippsTestEntities.AdressenDetails? –

+0

AdressenDetails是你数据库中的一张表吗?您的IEnumerable中的“AdressenDetail”对象中的哪些_specific_方法无法查看?忽略我的答案,直到你回答这个问题。 – gunr2171

+0

@AndyWiesendanger是的,这正是我的问题,如果我添加一个.ToList()我IEnumerable然后我可以看到结果调试窗口。 – GermanFighter

回答

0

实体框架很懒。

我的意思是这是一个好方法。它只会取得它需要的数据预先提取。任何链接值 - 如链接/ 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);子句。