я использую Ef5 Code First и имеют такой запрос, как это:Split запрос с включает в несколько запросов
var query = DbSet.Include(ent => ent.Websites)
.Include(ent => ent.Addresses)
.Include(ent => ent.IndustryType)
.Include(ent => ent.Factors)
.Include(ent => ent.Factors.Select(fact => fact.Objectives))
.Include(ent => ent.DmpNodes)
.Include(ent => ent.DmpNodes.Select(node => node.DmpNodeConnections));
Если я использую более 4 включает в себя, запрос выполняется очень медленно. Я уже знаю, почему это так.
Я мог бы опустить, например. DmpNodes включают и загружают это свойство навигации с ленивой загрузкой, но это приведет к сотням запросов.
Я ищу способ разделить этот запрос, чтобы я мог сначала загрузить объекты, например. Адреса, IndustryType и Factors. А второй запрос заполняет эти объекты остальным.
Возможно ли это или есть другое хорошее решение?
ЕСЛИ вы делаете отдельные запросы, которые используют один и тот же контекст, EF автоматически объединяет связанные объекты в памяти. – MaxSC
Не могли бы вы показать мне, как это выглядит в коде? В конце мне нужны объекты сущности со всеми свойствами навигации, заполненными. – RolandG
Ну, просто напишите тест на вашей стороне. Выберите веб-сайты, а затем адреса в отдельном запросе, используя тот же контекст, и посмотрите, правильно ли заполнены свойства навигации! – MaxSC