小编ron*_*y97的帖子

NHibernate使用QueryOver:WHERE和EXISTS

我有一个Show带有儿童导航的实体IList<TicketRequest>.使用QueryOver,我想选择所有Show设置了Active标志的实体,并选择Shows将来的空气并具有关联的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))
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何使用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();
Run Code Online (Sandbox Code Playgroud)

它本质上产生SQL:

select s.*
from Show s
where s.ShowDate > getdate() and exists(
     select …
Run Code Online (Sandbox Code Playgroud)

.net nhibernate queryover

4
推荐指数
1
解决办法
6848
查看次数

标签 统计

.net ×1

nhibernate ×1

queryover ×1