选择n + 1问题

Arn*_*psa 6 nhibernate domain-driven-design fluent-nhibernate linq-to-nhibernate select-n-plus-1

Foo有头衔.
酒吧参考Foo.我有一个酒吧收藏.
我需要一个Foo.Title的集合.

如果我收集10个酒吧,我会称db 10次.

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

目前这个(使用NHibernate Linq并且我不想丢弃它)检索Bar集合.

var q = from b in Session.Linq<Bar>()
                where ...
                select b;
Run Code Online (Sandbox Code Playgroud)

我读了艾恩德对此的看法.
另一个相关问题.
一些文档.
和另一篇相关的博文.
也许有用吗?
什么这个
也许MultiQuery是我需要的?:/

但我仍然无法在适当的解决方案中"编译"这个.

如何避免选择n + 1?

Arn*_*psa 3

这不起作用:

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

但这有帮助:

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

..但是现在要使用存储库的东西不知道它也在加载 foos 。
有什么想法如何使其更明确吗?

一种想法是将命名更改为 FindBarsWithFoos()。

至少它有效。