У меня возникли проблемы с запросом Linq NHibernate.NHibernate коллекция нетерпевая загрузка принимает счет
Мне нужно получить партию ваучеров с их деталями. Поскольку мне нужно повторить их, я хотел бы получить всю информацию за одно исполнение.
Мой запрос заключается в следующем:
return this.Session.Query<VouchersToIntegrate>()
.Take(query.BatchSize)
.Fetch(x => x.VoucherLines)
.ToList();
Где VouchersToIntegrate является ваучер и VoucherLines линии каждого ваучера.
Теперь пакет batchSize установлен на 50.000, но когда я возвращаю все объекты, я просто получаю 23XXX. Это связано с тем, что я предполагаю, что структура внутренне выполняет отдельный элемент после того, как получает все объекты из базы данных (на стороне клиента). Есть ли другой способ получить 50 000 объектов с отдельным фильтром на стороне SQL-сервера?
Благодаря
Итерация по ленивым загруженным свойствам с помощью NHibernate не вызывает проблем с n + 1 при загрузке, если вы правильно настроили свои объекты. См. [Это более подробное объяснение] (/ a/36070727/1178314). Поэтому, если вы хотите получать нагрузку, потому что у вас есть проблема с загрузкой n + 1, вы должны ее прочитать. –