我有一个复杂的实体,有很多子对象集合,它们也很复杂:
public class Order : AdvancedBaseOrder, ICheckable
{
public virtual ICollection<RouteUnit> RouteUnits
public virtual ICollection<Invoice> Invoices
public virtual ICollection<Call> Calls;
public virtual ICollection<Payment> Payments;
......
}我的支付类聚合了许多其他对象。
public class Payment: ICheckable
{
public virtual A A;
public virtual B B;
public virtual C C;
public virtual D D;
......
}我想获得两个查询的订单:
我不想让nhib懒散地支付负载,因为我想重写支付对象的获取策略。
因此,我的问题是如何将两个查询结果合并在一个聚合中。谢谢
发布于 2013-02-10 18:44:37
在这种情况下,batch-size="25"设置可以为您完成工作。阅读更多文档:19.1.5.使用批取。
批次大小可应用于类或集合映射:
付款类别
<class name="Payment" batch-size="10">...</class>收款
<class name="Order">
<set name="Payments" batch-size="3">
...
</set>
</class>简单地说,批处理是如何工作的: NHibernates加载所有Orders的集合。然后,基于批处理大小设置(例如,25)创建对Payments的几次调用,这些调用由刚刚加载的订单的ID过滤过:
其中OrderId in (@o1,@o2,@O3.@o25)
合并将在NHibernate会话中为您完成。根据我的经验这是最强大的地图..。懒惰和分批。
https://stackoverflow.com/questions/14800152
复制相似问题