У меня проблема. У меня есть люди и кошки. У каждого человека есть некоторые Кошки (есть внешний ключ в Cats, который указывает на первичный ключ в Лицах). У каждого кота есть возраст. Я хочу выбрать Лица, у которых есть "старые" кошки. Я хочу ВСЕХ кошек этих людей, а не только "старых" кошек. Мне нужно сделать это с помощью синтаксиса QueryOver.
В T-SQL это будет что-то вроде:
SELECT P.*, C.*
FROM Persons P
LEFT JOIN Cats C
ON P.Id = C.OwnerId
WHERE EXISTS (
SELECT 1
FROM Cats C2
WHERE P.Id = C2.OwnerId AND C2.Age > 5)
Я знаю, что мне нужно использовать подзапросы, и я мог бы легко использовать "старый" синтаксис nhibernate (Criteria/DetachedCriteria), но я не могу это сделать в синтаксисе QueryOver.
Я НЕ хочу условие "IN". Мой первичный ключ - сложный ключ, поэтому я не могу сделать это с помощью IN.
var persons = session.QueryOver<Person>.WithSubquery.WhereExists( ??? );