Первый запрос загружает проект и его дочерних партнеров. Важной частью является псевдоним Партнера. Псевдоним партнера используется для имени второго запроса. Второй запрос загружает партнеров и расходы. Когда это выполняется как «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 подходов.