2017-10-12 6 views
0

Bitte beachten Sie den Code unten:laden Eifrig eine Sammlung

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

Wie kann ich wieder eine Person, die die Person.Sports Sammlung mit Spannung geladen ist?

Ich habe versucht, QueryOver und Fetch zu verwenden.

Antwort

0

Sie können in Ihrer Zuordnung angeben, dass die Sammlung nicht lazy geladen werden soll. Diese Sammlung wird dann jedoch für jede Abfrage abgerufen, in die Sie eine Person laden möchten.

Ich bin sicher, dass Sie es mit QueryOver tun können, aber ich habe das noch nicht sehr oft verwendet. Sie können auch den Abruf-Modus angeben, wenn der ICriteria Ansatz:

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

Da ich wissen wollte, wie es zu tun, wie auch mit QueryOver, ich habe ein bisschen worden googeln und ich kam in this. Haben Sie versucht, die Entitäten wie folgt abzurufen:

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