Присоединяйтесь и включайте в Entity Framework - PullRequest
29 голосов
/ 06 января 2009

У меня следующий запрос linq для сущностей. Проблема в том, что он, кажется, не загружает отношение «Теги», хотя я включил что-то для него. Это прекрасно работает, если я не присоединяюсь к тегам, но мне нужно это сделать.

            var items = from i in db.Items.Include("Tags")
                        from t in i.Tags
                        where t.Text == text
                        orderby i.CreatedDate descending
                        select i;

Есть ли другой способ задать этот запрос? Может быть, это разделить или что-то?

1 Ответ

50 голосов
/ 06 января 2009

Ну, «Включить» противоречит «где». Включить говорит: «Загрузить все теги». Где говорится: «Загрузите несколько тегов». При наличии противоречия между запросом и включением запрос всегда будет выигрывать.

Чтобы вернуть все теги из любого элемента с минимум одним тегом == текст:

        var items = from i in db.Items.Include("Tags")
                    where i.Tags.Any(t => t.Text == text)
                    orderby i.CreatedDate descending
                    select i;

(не проверено, поскольку у меня нет вашей БД / модели)

Вот действительно хорошая бесплатная книга о LINQ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...