У меня проблема. У меня есть люди и кошки. У каждого человека есть несколько кошек (в Cats есть внешний ключ, который указывает на первичный ключ в Persons). У каждой кошки есть возраст. Я хочу выбрать людей, у которых есть «старые» кошки. Я хочу ВСЕХ кошек этих людей, а не только «старых» кошек. У каждого человека есть несколько кошек (в Cats есть внешний ключ, который указывает на первичный ключ в Persons). У каждой кошки есть возраст. Я хочу выбрать Лиц, которые ...
У меня проблема. У меня есть люди и кошки. У каждого человека есть несколько кошек (в Cats есть внешний ключ, который указывает на первичный ключ в Persons). У каждой кошки есть возраст. Я хочу выбрать людей, у которых есть «старые» кошки. Я хочу ВСЕХ кошек этих людей, а не только «старых» кошек. У каждого человека есть несколько кошек (в Cats есть внешний ключ, который указывает на первичный ключ в Persons). У каждой кошки есть возраст. Я хочу выбрать Лиц, которые ...
У меня проблема. У меня есть люди и кошки. У каждого человека есть несколько кошек (в Cats есть внешний ключ, указывающий на первичный ключ в Persons). У каждой кошки есть возраст. Я хочу выбрать людей, у которых есть «старые» кошки. Я хочу ВСЕХ кошек этих людей, а не только «старых» кошек. Мне нужно сделать это с помощью синтаксиса 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 (Критерии / DetachedCriteria), но я не могу сделать это в синтаксисе QueryOver.
Мне НЕ нужно условие «IN». Мой первичный ключ - сложный ключ, поэтому я не могу сделать это с IN.
var persons = session.QueryOver<Person>.WithSubquery.WhereExists( ??? );