Я плохо разбираюсь в математике, но понимаю, что такое декартово произведение.
Вот моя ситуация (упрощенная):
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;}
}
Моя цель - эффективно загрузить весь проект.
Проблема, конечно, в следующем:
- Если я попытаюсь загрузить партнеров и их затраты, запрос вернет миллионы строк.
- Если я лениво загружаю Partner.Costs, запрос db будет рассылаться спамом (что немного быстрее, чем первый подход)
Как я читал, обычным обходным путем является использование MultiQueries, но я просто не понимаю.
Итак, я надеюсь изучить этот точный пример.
Как эффективно загрузить проект целиком?
P.s. Я использую NHibernate 3.0.0.
Пожалуйста, не публикуйте ответы с использованием hql или строковых критериев api.
Addresses
для партнера. ИспользованиеQueryOver
было бы идеальным. - person Arnis Lapsa   schedule 11.03.2011