2017-10-12 54 views
0

S'il vous plaît voir le code ci-dessous:charger Ardemment une collection

public Person GetById(Guid id) 
     { 
      return Session.Get<Person>(id); 
     } 

Comment puis-je retourner une personne qui a la collection Person.Sports avec impatience chargée?

J'ai essayé d'utiliser QueryOver et Fetch.

Répondre

0

Vous pouvez spécifier dans votre mappage que la collection ne doit pas être chargée paresseusement, mais ensuite, cette collection sera récupérée pour chaque requête dans laquelle vous souhaitez charger une personne.

Je suis sûr que vous pouvez le faire avec QueryOver, mais je n'ai pas encore beaucoup utilisé. Vous pouvez également spécifier le fetch mode lors de l'utilisation de l'approche ICriteria:

var crit = session.CreateCriteria<Person>(); 
crit.SetFetchMode("Sports", FetchMode.Eager); 
crit.Add(Restrictions.Eq("PersonId", id); 

Depuis que je voulais savoir comment le faire en utilisant QueryOver aussi, je l'ai été googler un peu et je suis tombé sur this. Avez-vous essayé d'extraire les entités comme ceci:

var query = session.QueryOver<Person>() 
        .Fetch(p => p.Sports).Eager 
        .Left.JoinAlias(p => p.Sports,() => s) 
      ...