Помощь с QueryOver и WhereExists

У меня проблема. У меня есть люди и кошки. У каждого человека есть несколько кошек (в 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( ??? );
12
задан Kris Ivanov 4 March 2011 в 14:50
поделиться