2009-03-17 16 views
1

eine Objekthierarchie wie die folgenden gegeben:Ist es möglich, über zwei 1: n-Beziehungen in NHibernate zu laden?

class Category 
{ 
    List<SubCategory> SubCategories; 
} 

class SubCategory 
{ 
    List<Product> Products; 
} 

class Product 
{ 
} 

Ist es möglich, eifrig Last die ganze Hierarchie mit NHibernate? Ich würde gerne eine Abfrage ausführen, um alle Kategorien mit Unterkategorien und Produkten geladen zu laden.

+0

Haben Sie eine Lösung dafür gefunden? – Amitabh

Antwort

1

Ja, es ist möglich ... Aber glauben Sie nicht, dass dies Auswirkungen auf die Leistung haben wird? Es ist möglich, dass Sie eine große Menge an Daten abrufen.

Um dies zu tun, müssen Sie die 'SetFetchMode'-Methode des ICriteria verwenden, die Sie zum Abrufen der Instanzen verwenden.

Etwas wie folgt aus:

ICriteria crit = session.CreateCriteria (typeof(Category)); 

crit.SetFetchMode ("SubCategories", FetchMode.Eager); 

Oder vielleicht unter Verwendung von Create:

ICriteria crit = session.CreateCriteria (typeof(Category)); 

crit.CreateAlias ("SubCategories", "sc", JoinType.LeftOuterJoin); 
crit.CreateAlias ("sc.Products", "p", JoinType.InnerJoin); 

vielleicht werden Sie ein wenig mit den möglichen JoinTypes spielen müssen, je nach Ihrer Situation/was Sie wollen.