2009-11-18 4 views
4

다음 모델을 만들고 nHibernate로 매핑했습니다. 게으른 로딩을 사용하므로 처음에는 딜러 용 차량을 얻을 필요가 없습니다.nHibernate Collection Count

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

추가 지연로드 대신 같은 Count 또는 Contains 같은 특정 작업에 대한 컬렉션을 채우는 SQL 발행 할 것입니다. 당신은 큰 컬렉션을 가지고 있고 특별한 동작을 필요로하는 경우

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

또는 HBM

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

그것은 단지 유용입니다 : 유창 매핑에서 그 같이 사용.