2012-03-13 4 views
1

Я новичок в платформе Entity Framework. Я пытаюсь получить счет из запроса LINQ, который должен вернуть 1 результат. Счет всегда равен 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 не равно нулю, так что я в состоянии добраться до счета вызова. Опять же, я подтвердил, что у меня есть мои данные в качестве моей сети для отладки. Где-то совпадают как «52635 == 52635»

Есть ли что-то, что мне не хватает здесь, чтобы получить мой счет? Или есть какое-то предложение о том, как я могу отладить эту проблему дальше?

Я использую Entity Framework 4 +

Спасибо!

+0

Вы вошли в отладчик и осмотрели li.Notes в точке, где вы звоните? Я подозреваю, что проблема существует, а не со свойством count. –

+0

Показать код, который извлекает 'порядок', проблема, вероятно, существует (как упоминалось в ответе @ DanielAWhite). – Jamiec

+0

Нужен ли мне .Include, если я могу добраться до своих Нот через навигационное свойство? Связь есть, и я получаю сообщение об ошибке, когда пытаюсь использовать .Include. – Jared

ответ

0

Я обнаружил, что это проблема с записью в удаляемой БД. Извините ребята! Спасибо за помощь, хотя!

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.Any()) вместо if(li.Notes.Count() > 0).

Кроме того, вы можете обнаружить, что использование li.Notes.Count, которое является свойством в типе коллекции, используемым Notes, не будет работать так же, как li.Notes.Count(), который является методом расширения Linq. Я не уверен, не проверяя, что вам нужно включить.