我数学不好,但是我知道什么是笛卡尔积。
这是我的情况(简体):
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,但我有点不明白。
所以我希望通过这个确切的例子来学习。
如何有效地加载整个项目?
ps我正在使用NHibernate 3.0.0。
请不要使用hql或字符串标准的api方法发布答案。