如何使用NHibernate C
找不到没有引用的QueryOver
类?
public class A {
public List<C> c { get; set; }
}
public class B {
public List<C> c { get; set; }
}
public class C {
}
SQL中的相同:
select C.* from C
left join A on C.Id = A.C
left join B on C.Id = B.C
where A.Id is null and B.Id is null
如果我只有一次加入,那么这样的事情就可以了:
session.QueryOver<A>(() => a)
.Right.JoinQueryOver(() => a.C, () => c)
.WhereRestrictionOn(() => a.DbId)
.IsNull
.List() // TODO: use transfomer to select C
编辑:我不确定引用是List<C>
还是仅仅C
是否重要。
无论如何,我很感兴趣我如何在C
处查询查询,然后在我没有直接path
可用的地方进行加入
答案 0 :(得分:0)
这样的事情似乎有效,但不是我希望的答案:
C c = null;
var aSubquery = QueryOver.Of<A>()
.JoinAlias(a => a.C, () => c)
.Select(Projections.Property(() => c.Id));
var bSubquery = QueryOver.Of<B>()
.JoinAlias(b => b.C, () => c)
.Select(Projections.Property(() => c.Id));
session.QueryOver<C>()
.WithSubquery
.WhereProperty(x => x.Id).NotIn(aSubquery)
.WithSubquery
.WhereProperty(x => x.Id).NotIn(bSubquery);
如果您有更好的答案,请提供替代方案。