Fluent Nhibernate QueryOver and Joins



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

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

因此,根据我在此示例中的理解,Cat 对象在加入 Kittens 后返回,然后使用小猫名称和猫的年龄进行过滤。联接之所以有效,是因为 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

如果你有来自森林 -> 树的关系,那么你可以这样做:

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

最新更新