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()。

至少它工作。