4
我有一個Show
實體與子導航IList<TicketRequest>
。使用QueryOver
,我想選擇所有設置了活動標誌的Show
實體,並且還選擇在將來空氣並且具有關聯的實體的Show
。正在運行的SQL查詢是:NHibernate使用QueryOver:WHERE和EXISTS
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)
任何人都可以找出如何一路過關斬將,包括額外的WHERE條件?任何幫助,將不勝感激。
這奏效了!謝謝。 – ronny97