2009-11-18 134 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" ... 

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