C'è un modo per impostare il fetchmode su desiderosi di più di un oggetto utilizzando linq per nibernato. Sembra esserci un metodo di espansione che mi consente solo di impostare un oggetto. Tuttavia ho bisogno di impostarlo per più di un oggetto. È possibile? GrazieLinq per NHibernate e modalità fetch di caricamento ansioso
44
A
risposta
18
basta usarlo più di una volta.
IList<Entity> GetDataFromDatabase()
{
var query = session.Linq<Entity>();
query.Expand("Property1");
query.Expand("Property2");
return query.ToList();
}
8
Per quanto posso vedere, questo non è equivalente: setFetchMode idrata un albero di oggetti e il metodo Expand recupera un prodotto cartesiano.
102
Il nuovo provider LINQ fa un po 'diverso:
var customers = session.Query<Customer>().Fetch(c => c.Orders).ToList();
Maggiori informazioni qui: http://mikehadlow.blogspot.com/2010/08/nhibernate-linq-eager-fetching.html
0
In contiune a @Mike Hadlow
risposta, il recupero livello successivo (nipoti) che devi fare:
var customers = session.Query<Customer>() .FetchMany(c => c.Orders) .ThenFetchMany(o => o.OrderLines).ToList();
o query.Expand ("Proprietà1, Proprietà2"); – Sprintstar
È un metodo di espansione? Non riesco a trovarlo in NHibernate.Linq v2.0.50727. –
Voglio dire, versione 1.0.0.0 –