使用 LINQ-to-NHibernate 有没有办法缩小FetchMany()
返回的范围?
给定以下类结构
public class Foo
{
public virtual int Id { get; set; }
public virtual IList<Bar> Bars { get; set; }
}
public class Bar
{
public virtual string Description { get; set; }
}
我怎样才能做到这一点:
session.Query<Foo>()
.Where(foo => foo.Id > 30)
.FetchMany(foo =>
foo.Bars.Where(bar => bar.Description.StartsWith("x")));
NHibernate 将返回所有 Id > 30 的 Foo,对于那些 Foo 的所有附加 Bar,Bar 的描述以字母“x”开头?
我发现了一些使用旧QueryOver()
东西的帖子,但我明确地想使用 NHibernate 的 LINQ 提供程序。
有任何想法吗?
更新
我想我需要澄清我想要的结果。
<Foo Id="1">
<Bar Description="x1"/>
<Bar Description="b1"/>
</Foo>
<Foo Id="31">
<Bar Description="x2"/>
<Bar Description="x3"/>
<Bar Description="b2"/>
</Foo>
<Foo Id="32">
<Bar Description="b3"/>
</Foo>
从上面概述的数据中,我期望得到以下结果
<Foo Id="31">
<Bar Description="x2"/>
<Bar Description="x3"/>
</Foo>
<Foo Id="32"/>
附加的 Where 子句应该只对 Bar 有效!它不应该进一步缩小 Foo 的列表!只是减少FetchMany()
回报。