2010-05-05 2 views
0

J'ai un parent d'objet qui a une liste des enfants:NHibernate FetchMode

class Parent {Id, Name, IList<Child> children} 
class Child {Id, Name} 

J'ai besoin de sélectionner tous les parents où il y a une condition pour leurs enfants, mais je ne veux pas d'obtenir des lignes en double (n » t veulent les enfants les détails pour apparaître dans la liste de sélection)

Voici le code:

session.CreateCriteria(typeof(Parent)) 
.SetFetchMode("children", FetchMode.Select); 
.CreateCriteria("children").Add(Subqueries.PropertyIn("Id", {1,2,3,4})) 
.List<Parent>(); 

la requête ajoute toutes proprties de classe enfant pour sélectionner la liste qui se traduit en deux exemplaires parents.

Est-il possible de sélectionner tous les parents sans avoir les détails de l'enfant dans la liste de sélection?

Merci

Répondre

0

Une solution possible:

session.CreateCriteria<Parent>() 
     .CreateCriteria("children") 
     .Add(Subqueries.PropertyIn("Id", {1,2,3,4})) 
     .SetResultTransformer(Transformers.DistinctRootEntity) 
     .List<Parent>();