Modificare la strategia di caricamento delle entità a runtime è senz’altro uno dei punti di forza di NHibernate.
Utilizzando Criteria si può utilizzare il metodo SetFetchMode per modificare la modalità di fetch, mentre chi usa HQL può usare il fetch join per eseguire un eager load di una entità. Ma volendo usare NHibernate.Linq come possiamo fare?
Fortunatamente esiste un apposito extension method, l’Expand. Nell’esempio qui sotto carichiamo una fattura con il relativo cliente utilizzando un’unica query:
1: Dim q = Me.GetSession.Linq(Of Fattura)()
2: q.Expand("Cliente")
3:
4: Dim items = From item In q _
5: Where item.Numero = "10"
6: ' Restituisco la lista
7: Return items.ToList()(0)