2011-12-09 90 views
0

如何使用QueryOver编写此查询。nhibernate QueryOver - 复杂子查询

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

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

这可能吗?

感谢您的帮助

回答

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();