Присоединяйтесь и включайте в Entity Framework

.net c# entity-framework linq sql

Вопрос

У меня есть следующий запрос 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;

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

Принятый ответ

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

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

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

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

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



Related

Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему
Лицензировано согласно: CC-BY-SA with attribution
Не связан с Stack Overflow
Является ли этот КБ законным? Да, узнайте, почему