nHibernate Collection Count

时间:2009-11-18 16:28:42

标签: nhibernate collections lazy-loading

我有以下模型,我已经创建并使用nHibernate进行映射。 使用延迟加载,所以我不需要在开始时获得经销商的车辆。

Public class Dealer
{
public virtual string Name { get;set;}
public virtual IList<Vehicles> Vehicles { get;set;}
}

现在让我们假设经销商有数千辆车。

如果我Dealer.Vehicles.Count,那么NH将选择并提取所有数据。

简单计算的最佳方法是什么?有没有什么方法可以在经销商类别中声明新的房地产经纪人数量来计算?

此外,Hibernate还有一个功能,我相信它将在更新版本的NH中实现,称为Extra Lazy Loading。这会解决问题吗?

2 个答案:

答案 0 :(得分:2)

额外的延迟加载会发出sql而不是为某些操作填充集合,例如CountContains。在流畅的映射中,它用作:

HasMany(x => x.CollectionProperty).ExtraLazyLoad();

或HBM

<one-to-many lazy="extra" ...

如果您拥有大型集合并且需要特殊行为,那么它才有用。

答案 1 :(得分:0)

使用计数投影(Projections.RowCount)