1

我正在学习 Fluent nHibernate。我在构建与我在网上找到的经典示例不完全相同的查询时遇到了麻烦。通常我发现这个例子:

IQueryOver<Cat,Cat> catQuery =
    session.QueryOver<Cat>(() => catAlias)
        .JoinAlias(() => catAlias.Kittens, () => kittenAlias)
        .Where(() => catAlias.Age > 5)
        .And(() => kittenAlias.Name == "Tiddles");

因此,根据我在此示例中的理解,在加入小猫之后返回 Cat 对象,然后使用小猫名称和猫的年龄进行过滤。连接有效,因为 Cat 对象有一个名为 Kittens 的属性。

我正在尝试做的一个示例如下所示:

Forest f = null;
Tree t = null;

ForestsFound = session.QueryOver<Forest>(() => f)
                    .JoinAlias(() => t.Forest, () => f)
                    .Where(() => t.NumberOfTrees > 1000)
                    .List<Forest>()
                    .ToList<Forest>();

森林本质上是一个查找表,它是树,它链接到树所在的森林,但我想返回一个不同的森林列表。因此,在常规 sql 中,它看起来像:

select f.*
from Forest f
   inner join Tree t
      on t.Forest_id = f.ID
where t.NumberOfTrees > 1000
4

1 回答 1

2

如果您与 Forest -> Trees 有关系,那么您可以这样做:

Forest f = null;
Tree t = null;

ForestsFound = session.QueryOver<Forest>(() => f)
    .JoinAlias(() => f.Trees, () => t)
    .Where(() => t.NumberOfTrees > 1000)
    .List<Forest>();
于 2012-10-17T10:38:09.240 回答