2015-10-21 39 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);子句。