NHibernate QueryOver与SubQuery在哪里用或

时间:2011-10-09 17:12:04

标签: c# nhibernate subquery queryover

我需要在NHibernate中使用QueryOver执行以下SQL:

select *
from Post post
where post.User.Id = 1
or post.Level in (1, 2, 3)
or (select Id
    from SubPost sub
    where sub.Post = post
    and sub.User.Id = 1) != null

我现在不知道如何使用QueryOver执行此操作。对我来说问题是我必须如何声明子查询以及如何使用or条件添加它。我希望,有人可以给我一个提示。谢谢。

最诚挚的问候,托马斯

1 个答案:

答案 0 :(得分:-3)

试试这个

Post p = null;
SubPost s = null;
return session.QueryOver<Post>( () => p)
           .where( () => p.User.Id == 1)
           .Where( () => p.Level == 1 || p.Level == 2 || p.Lvel ==3 )
           .JoinAlias( () => s.Post , () => p)
           .Where( () => p.User.Id == 1)
           .List<Post>();

我真的不确定第二个在JoinAlias之后的地方,但是试试吧