流利的Nhibernate QueryOver和Joins

时间:2012-10-17 10:06:49

标签: nhibernate fluent-nhibernate

我正在学习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

1 个答案:

答案 0 :(得分:2)

如果你有来自Forest的关系 - &gt;树然后你可以这样做:

Forest f = null;
Tree t = null;

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