6

Foo ha il titolo.
Riferimenti bar Pippo. Ho una collezione con barre.
Ho bisogno di una collezione con Foo.Title.Seleziona n + 1 problema

Se ho 10 barre nella raccolta, chiamerò db 10 volte.

bars.Select (x => x.Foo.Title)

Al momento questo (usando NHibernate Linq e io non voglio farlo cadere) recupera collezione Bar.

var q = from b in Session.Linq<Bar>() 
       where ... 
       select b; 

Ho letto quello che dice Ayende about this.
Un altro question correlato.
Un po 'di documentation.
E un altro blog post correlato.
Forse this può essere d'aiuto?
Che dire di this?
Forse MultiQuery è quello che mi serve? :/

Ma non riesco ancora a "compilarlo" in una soluzione adeguata.

Come evitare selezionare n + 1?

risposta

3

questo non ha funzionato:

var q = from b in Session.Linq<Bar>().Expand("Foo.Title") 
       where ... 
       select b; 

Ma questo tipo di aiuto:

var q = from b in Session.Linq<Bar>().Expand("Foo") 
       where ... 
       select b; 

..ma ora cosa che sta per usare repository non sa che sta caricando foos troppo.
Qualche idea su come renderla più esplicita?

Un'idea è di cambiare la denominazione in FindBarsWithFoos().

Almeno funziona.