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