2009-11-18 86 views
4

我有以下模型,我已经创建并与nHibernate映射。 使用延迟加载,所以我不需要在开始时为经销商购买车辆。nHibernate集合计数

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

现在让我们假设经销商有成千上万的车辆。

如果我做Dealer.Vehicles.Count那么NH会选择并拉取所有的数据。

什么是简单计数的最佳方法?有没有什么方法可以在经销商类别内宣布新的房产经销商数量?

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

回答

0

使用计数投影(Projections.RowCount)

2

额外的延迟加载会发出SQL,而不是填充某些操作,如CountContains集合。在流利的映射其用作:

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

或HBM

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

这是唯一有用的,如果你有大的集合,需要特殊的行为。