2009-11-18 5 views
4

J'ai le modèle suivant que j'ai créé et mappé avec nHibernate. Utilisation de chargement paresseux, donc je n'ai pas besoin d'obtenir les véhicules pour le concessionnaire au début.nHibernate Collection Count

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

Supposons maintenant que le concessionnaire a des milliers de véhicules.

Si je Dealer.Vehicles.Count puis NH sélectionnera et tirer toutes les données.

Quelle est la meilleure façon d'obtenir simplement un compte? Y a-t-il un moyen d'obtenir un compte sans déclarer une nouvelle propriété dealerCount dans la catégorie des concessionnaires?

En outre il y a une fonctionnalité dans Hibernate que je crois sera mis en œuvre dans une version plus récente de NH appelé supplémentaire Loading Lazy. Est-ce que cela résoudrait le problème?

Répondre

0

Utilisez la projection de comptage (Projections.RowCount)

2

chargement supplémentaire paresseux publieraient sql au lieu de peupler la collection pour certaines opérations telles que Count ou Contains. Dans les correspondances couramment utilisé comme son:

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

ou HBM

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

Il est seulement utile si vous avez de grandes collections et besoin du comportement spécial.

Questions connexes