Я пытаюсь загрузить дочернюю коллекцию дочерней сущности, которую выбираю. Я пытаюсь имитировать таким образом , делая в основном два будущих запроса и затем перечисляя один из них. Это должно привести к двум запросам к базе данных:
var idd = session.CreateQuery("from ItemDeliveryDetail idd " +
"join fetch idd.ItemDelivery " +
"left join fetch idd.SupplierInvoice " +
"where idd.Id = 21931828")
.Future<ItemDeliveryDetail>();
var spc = session.CreateQuery("from SpecialCondition spc " +
"where spc.ItemDelivery " +
"in (select idd.ItemDelivery " +
"from ItemDeliveryDetail idd " +
"where idd.Id = 21931828)")
.Future<SpecialCondition>();
var result = idd.ToList();
Последняя строка действительно приводит к двум запросам к базе данных. Запросы - именно то, что я ожидаю (они довольно длинные, и я не думаю, что они имеют отношение к вопросу, но если вы хотите их видеть, я вставил их здесь ).
Проблема в том, что результаты этих двух запросов не объединены, т. Е. Следующее перечисление будет все еще запрашивать базу данных для SpecialCondition
s каждого ItemDelivery
:
foreach (var itemDeliveryDetail in result)
{
foreach (var specialCondition in itemDeliveryDetail.ItemDelivery
.SpecialConditions)
{
// Do something
}
}
Как это исправить?