nhibernate QueryOver - 复杂的子选择

时间:2011-12-09 13:26:50

标签: nhibernate queryover subquery

如何使用QueryOver编写此查询。

select * from User usr where exists (select ord.ID from Order ord where ord.UserID = usr.ID)

我知道我们可以使用像..WithSubSelect.WhereProperty(x=>x.ID == subquery.as<int>())这样的QueryOver编写子查询。但是我想在子查询中使用主查询的字段,以便在where子句中使用它。

这可能吗?

谢谢你的帮助

1 个答案:

答案 0 :(得分:2)

User userAlias = null;
var subquery = QueryOver.Of<Order>()
    .Where(o => o.User == userAlias)
    // or
    .Where(o => o.User.Id == userAlias.Id)

var usersWithOrders = session.QueryOver(() => userAlias)
    .WithSubqueries.WhereExists(subquery)
    .List();