Как вы можете использовать LINQ Lambda, где Property Count = Что-то - PullRequest
1 голос
/ 10 марта 2011

У меня есть объект Entity, Item, который выглядит следующим образом ..

public class Item()
{
    IEnumerable<Category> Categories { get; set; }
}

и я пытаюсь получить список предметов с 0 счетом

var unassigned = db.Items.Where(i => i.Categories.Count() == 0);

или

var unassigned = db.Items.Where(i => i.Categories.Any());

но оба выдают ошибку ... «Указанный элемент типа« Категории »не поддерживается в LINQ to Entities. Поддерживаются только инициализаторы, элементы сущностей и свойства навигации сущностей."

Что говорит мне эта ошибка и как я могу запросить то, что я ищу?

Ответы [ 2 ]

2 голосов
/ 10 марта 2011

Является ли Category также сущностью, отслеживаемой EF?EF, кажется, не думает, что это так.Вы используете POCO?Обычно навигационные свойства, которые 1-ко-многим, должны быть представлены с ICollection<T>, а не IEnumerable.

По сути, EF говорит, что не знает, как превратить db.Items.Where(i => i.Categories.Count() == 0) в SQL, потому что не знает, какие категории относятся к базе данных.

Возможно также, что вам потребуется Include("Categories") при вызове EF, но я думаю, что у вас есть более серьезные проблемы, чем эта.

0 голосов
/ 10 марта 2011

Попробуйте

var unassigned = db.Items.Categories.Where(c=>c.Count() ==0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...