nhibernate QueryOver - сложный выбор - PullRequest
0 голосов
/ 09 декабря 2011

Как мне написать этот запрос с помощью 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.

Возможно ли это?

спасибо за помощь

1 Ответ

2 голосов
/ 09 декабря 2011
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();
...