使用NHibernate 3.0.0时对抗笛卡尔乘积(x-join)

我数学不好,但是我知道什么是笛卡尔积。

这是我的情况(简体):


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方法发布答案。


哔哔one
浏览 360回答 3
3回答
打开App,查看更多内容
随时随地看视频慕课网APP