6

Foo有標題。
酒吧參考Foo。 我有一個酒吧集合。
我需要一個Foo.Title的集合。選擇n + 1問題

如果我有10個酒吧集合,我會打電話給DB 10次。

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

目前這種(使用NHibernate LINQ和我不想放棄它)檢索酒吧集合。

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

我看了Ayende說的about this
另一個相關的question
有點documentation
和另一個相關的blog post
也許this可以提供幫助嗎?
this怎麼辦?
也許MultiQuery是我需要什麼? :/

但我仍然不能'編譯'在適當的解決方案。

如何避免選擇n + 1?

回答

3

這不起作用:

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

但這種一幫:

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

..但現在,這是將要使用存儲庫不知道它加載FOOS過的事情。
任何想法如何使它更明確?

一個想法是將命名更改爲FindBarsWithFoos()。

至少它工作。