6

Foo ma tytuł.
Odnośniki do paska Foo. Mam kolekcję z Bars.
Potrzebuję kolekcji z Foo.Title.Wybierz problem z n + 1

Jeśli mam 10 pasków w kolekcji, zadzwonię do db 10 razy.

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

W tej chwili (przy użyciu NHibernate Linq i nie chcę, aby go nie upuścić) pobiera kolekcję poprzeczkę.

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

Przeczytałem, co Ayende mówi about this.
Kolejne powiązane question.
Trochę documentation.
I inne powiązane blog post.
Może this może pomóc?
Co z this?
Być może MultiQuery jest tym, czego potrzebuję? :/

Ale nadal nie mogę "skompilować" tego we właściwym rozwiązaniu.

Jak uniknąć wyboru n + 1?

Odpowiedz

3

To nie działa:

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

Ale ten rodzaj pomógł:

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

..ale teraz rzeczą, która będzie korzystać z repozytorium nie wie, że jest to zbyt Foos ładowania.
Jakieś pomysły, jak uczynić to bardziej wyraźnym?

Jednym z pomysłów jest zmiana nazewnictwa na FindBarsWithFoos().

Przynajmniej działa.

Powiązane problemy