2011-12-09 113 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();