2012-03-13 106 views
1

我是新來的實體框架。我試圖從應該返回1結果的LINQ查詢中獲得計數。計數總是0。我知道數據在那裏,EDMX中的關係是健全的。C#LINQ to Entity .Count

下面是代碼:

 
LineItem li = order.LineItems.Where(i => i.ID == lineItemId).FirstOrDefault(); 
if (li != null) 
{ 
    if (li.Notes.Count > 0) 
    { 
     // Get note data 
    } 
} 

現在列表項不爲空,所以我能去的次數呼叫。我再次驗證,我有我的數據作爲我的調試網.Where匹配爲「52635 == 52635」

有沒有什麼我在這裏失蹤,爲了讓我的數量?或者有什麼建議可以讓我進一步調試這個問題?

我正在使用實體框架4 +

謝謝!

+0

你是否已經進入了一個調試器並檢查了li.Notes在你調用Count的地方?我懷疑這個問題在那裏,而不是與伯爵財產。 – 2012-03-13 13:05:59

+0

顯示檢索'訂單'的代碼,問題可能存在(正如@DanielAWAhite的答案所暗示的那樣)。 – Jamiec 2012-03-13 13:08:04

+0

如果我能夠通過導航屬性訪問筆記,是否需要一個.Include?關係在那裏,當我嘗試使用.Include時出現錯誤。 – Jared 2012-03-13 13:20:34

回答

0

我發現這是DB被刪除的記錄問題。對不起大家!感謝您的幫助!

2

確保你有Include的筆記。

+0

謝謝。當我嘗試: LineItem li = order.LineItems.Include(「LineItemNotes」)。其中(i => i.ID == lineItemId).FirstOrDefault();我得到:CS0122:'System.Data.Objects.DataClasses.RelatedEnd.Include(bool,bool)'由於其保護級別而無法訪問 – Jared 2012-03-13 13:13:44

1

+1上包含註釋。當你這樣做時,你應該使用效率更高的if(li.Notes.Any())代替if(li.Notes.Count() > 0)

此外,您可能會發現使用li.Notes.Count這是Notes使用的集合類型的屬性將不會以與作爲Linq擴展方法的li.Notes.Count()相同的方式工作。如果不檢查是否需要包含,我不會確信。