6

Foo possède un titre.
Références de barres Foo. J'ai une collection avec Bars.
J'ai besoin d'une collection avec Foo.Title.Sélectionnez n + 1 problème

Si j'ai 10 barres dans la collection, j'appellerai db 10 fois.

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

Au moment de cette (en utilisant NHibernate Linq et je ne veux pas laisser tomber) récupère la collection Bar. Je lis ce que dit Ayende about this.
Un autre apparenté question.
Un peu de documentation.
Et un autre connexe blog post.
Peut-être que this peut vous aider?
Qu'en est-il de this?
Peut-être MultiQuery est ce que j'ai besoin? :/

Mais je ne peux toujours pas «compiler» cela dans la bonne solution.

Comment éviter de sélectionner n + 1?

Répondre

3

Cela n'a pas fonctionné:

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

Mais ce genre a aidé:

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

..mais maintenant chose qui va utiliser dépôt ne sait pas que son chargement foos aussi.
Des idées pour le rendre plus explicite?

Une idée consiste à changer le nommage en FindBarsWithFoos().

Au moins cela fonctionne.

Questions connexes