2009-05-06 15 views

Odpowiedz

18

po prostu użyj go więcej niż raz.

IList<Entity> GetDataFromDatabase() 
{ 
    var query = session.Linq<Entity>(); 
    query.Expand("Property1"); 
    query.Expand("Property2"); 
    return query.ToList(); 
} 
+6

lub query.Expand ("Property1, Property2"); – Sprintstar

+2

Czy to jest metoda ekspansji? Nie można go znaleźć w NHibernate.Linq v2.0.50727. –

+0

Mam na myśli, wersja 1.0.0.0 –

8

O ile widzę, to nie jest równoważne: setFetchMode nawilża drzewo obiektów i Expand sposób pobiera iloczyn kartezjański.

102

Nowy dostawca LINQ robi to trochę inaczej:

var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList(); 

Więcej tutaj: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html

+0

jeśli 'Zamówienia' ma własną klasę podrzędną, czy byłby ładowany z zapałem? jeśli nie - w jaki sposób zmieniłbyś zapytanie, aby je załadować? – ilans

+1

Aby uzyskać wnuki: 'var clients = session.Query () .FetchMany (c => c.Orders) .ThenFetchMany (o => o.OrderLines) .ToList();' – ilans

0

W contiune do @Mike Hadlow odpowiedź, ściągam następny poziom (wnuki) trzeba zrobić:

var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();

Powiązane problemy