2012-03-13 21 views
1

私はEntity Frameworkを初めて使用しています。 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 
    } 
} 

今のListItemがnullではありません。ここで

はコードです。もう一度私のデバッグネットとしてデータがあることを確認しました。一致するものは "52635 == 52635"

私のカウントを得るためにここに欠けているものはありますか?または、この問題をさらにどのようにデバッグすることができるかについての提案はありますか?

私は4つの+

感謝をEntity Frameworkのを使用しています!

+0

デバッガを踏んで、Liを調べましたか?Countを呼び出しているところで注意してください。私は問題がそこにあると思うし、カウントプロパティではないと思う。 –

+0

'order'を取得するコードを表示すると、問題はおそらくそこにあります(@ DanielAWhiteの答えが示唆したように)。 – Jamiec

+0

Navigationプロパティを使用してNotesにアクセスすることができますか?インクルードが必要ですか?関係はそこにあり、.Includeを使用しようとするとエラーが発生します。 – Jared

答えて

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

1

+1オンノートに含まれています。あなたがそれをしたらif(li.Notes.Count() > 0)の代わりにより効率的なif(li.Notes.Any())を使うべきです。

また、Notesで使用されているコレクションタイプのプロパティであるli.Notes.Countを使用すると、Linq拡張メソッドのli.Notes.Count()と同じように動作しないことがあります。私はあなたが含む必要があることを確認せずに確信していません。