2009-05-26 7 views
1

Je veux obtenir une entité avec ses sous-propriétés. Comment puis-je faire cela avec nhibernate sans indiquer dans la cartographie. Je veux contrôler la récupération comme nous pouvons le faire dans linq-to-sql par la méthode "LoadWith()". Pas une solution automatisée.Comment récupérer une entité avec ses propriétés d'entité dans nhibernate?

public class Survey 
{ 
    public virtual long Id; 
    public virtual String Title; 
    public virtual IList<SurveyPage> Pages; 
} 

Je souhaite obtenir une enquête avec ses propriétés Pages chargées, dans une requête exacte sans utiliser de fichier de mappage. Comment puis-je faire ça dans nhibernate?

Répondre

1

Résolu. Cela a fait ce que je veux.

IList<Survey> surveys = session.CreateCriteria(typeof(Survey)) 
         .SetFetchMode("SurveyPages", FetchMode.Eager) 
         .List<Survey>(); 
+1

FetchMode.Eager est obsolète, utilisez plutôt FetchMode.Join. C'est en fait la même valeur, mais un autre nom. –

0

Oui, le FetchMode est un bon moyen de le faire. Les éléments à prendre en compte sont

  1. Vous pouvez uniquement définir le fetchmode sur une collection (à la fois) d'un fichier de mappage. Lorsque vous effectuez un mode de récupération sur des collections associées, il renvoie une jointure de lignes (ne sépare pas les lignes uniques de parent).

Une autre façon de faire de même est d'utiliser une requête HQl avec Join.

Questions connexes