Борьба с декартовым произведением (x-join) при использовании NHibernate 3.0.0

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

public class Project{
 public IList Partners{get;set;}
}
public class Partner{
 public IList Costs{get;set;}
 public IList
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;} }

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

Проблема, конечно, такая:

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

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

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

Ps Я использую NHibernate 3.0.0.
Please, do not post answers with hql or string fashioned criteria api approaches.

32
задан Arnis Lapsa 11 March 2011 в 15:08
поделиться