У меня есть Show
сущность с дочерней навигацией IList<TicketRequest>
. Используя QueryOver
, я хотел бы выбрать все Show
сущности, для которых установлен флаг Active, а также выбрать Show
s, которые будут транслироваться в будущем и с которыми связаны TicketRequest
сущности. Рабочий SQL-запрос:
select s.*
from Show s
where s.Active = 1 or
(s.ShowDate > getdate() and exists(
select 1
from TicketRequest tr
where tr.Show_id = s.Id))
Я не могу понять, как заставить это работать, используя QueryOver. Я могу добраться на полпути с:
Show showAlias = null;
var existing = QueryOver.Of<TicketRequest>()
.Where(r => r.Show.Id == showAlias.Id)
.Select(r => r.Show);
var results = Session.QueryOver<Show>(() => showAlias)
.Where(s => s.ShowDate > DateTime.Now)
.WithSubquery.WhereExists(existing)
.List();
, который по сути производит SQL:
select s.*
from Show s
where s.ShowDate > getdate() and exists(
select 1
from TicketRequest tr
where tr.Show_id = s.Id)
Может кто-нибудь понять, как пройти весь путь и включить дополнительные условия ГДЕ? Любая помощь будет оценена.