Можно ли загрузить свойство навигации коллекции сущностей? - PullRequest
1 голос
/ 21 марта 2012

У меня есть запрос, который будет возвращать массив объектов, например, так:

var collection = db.Items.ToArray();

Возможно ли теперь загрузить связанные данные из этих элементов одновременно (без ленивой загрузки):

Вот класс сущностей:

public class Item
{
    public int Id { get; set; }

    public virtual SecondaryItem Secondary { get; set; }
}

Мне нужно загрузить каждый дополнительный элемент в моем collection ПОСЛЕ того, как я извлек основные элементы в массиве, поэтому я не могу использовать метод Include в исходном запросе.

Возможно ли это?

Редактировать : Я имею в виду, что я бы предпочел загружать их все в одном запросе, а не по одному.

Ответы [ 2 ]

1 голос
/ 21 марта 2012

Просто запустите следующее:

db.Items.Select(x => x.SecondaryItem).Distinct().Load();

DbContext позаботится об инициализации всех существующих ссылок Item.SecondaryItem с соответствующими объектами.

Обратите внимание, что решение Дуэйна тоже подойдет; это немного более оптимизировано.

1 голос
/ 21 марта 2012

Попытка еще раз, основываясь на комментарии. Вы можете просто вытащить их всех вторым запросом?

var itemIds = collection.Select(i => i.ID);
var query = from s in db.SecondaryItems 
            where itemIds.Contains(s.ItemID) 
            select s;
...