Первый запрос загружает проект и его дочерних партнеров. Важной частью является псевдоним Партнера. Псевдоним партнера используется для имени второго запроса. Второй запрос загружает партнеров и расходы. Когда это выполняется как «Multiquery», Nhibernate будет «знать», что первый и второй запросы связаны с помощью paAlias ​​(или, скорее, сгенерированные sqls будут иметь псевдонимы столбцов, которые «идентичны»). Таким образом, второй запрос продолжит загрузку партнеров, которые уже были запущены в первом запросе.

хо разбираюсь в математике, но я понимаю, чтодекартово произведение является.
Вот моя ситуация (упрощенно):

public class Project{
 public IList<Partner> Partners{get;set;}
}
public class Partner{
 public IList<PartnerCosts> Costs{get;set;}
 public IList<Address> Addresses{get;set;}
}
public class PartnerCosts{
 public Money Total{get;set;}
}
public class Money{
 public decimal Amount{get;set;}
 public int CurrencyCode{get;set;}
}
public class Address{
 public string Street{get;set;}
}

Моя цель - эффективно загрузить весь проект.

Проблема, конечно, заключается в следующем:

Если я попытаюсь загрузить партнеров и их стоимость, запрос вернет gazillion строкЕсли я лениво загружаю Partner.Costs, БД получает запрос со спамом (что немного быстрее, чем при первом подходе)

Пока я читаю, обычный обходной путь - использование MultiQueries, но я просто не понимаю.
Так что я надеюсь научиться на этом точном примере.

Как эффективно загрузить весь проект?

Постскриптум Я использую NHibernate 3.0.0.
Пожалуйста, не публикуйте ответы с hql или строковыми критериями API подходов.

Ответы на вопрос(4)

Ваш ответ на вопрос