【发布时间】:2017-03-30 09:46:37
【问题描述】:
如何使用 NHibernate 的 QueryOver 找到没有引用的任何 C 类?
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 可用的地方进行连接
【问题讨论】:
-
您应该使用
session.QueryOver(() => c).Left.JoinAlias(c => c.a, () => a).Left.JoinAlias(c => c.b, () => b)而不是JoinQueryOver来驱逐更改查询根,但您需要在C中添加A和B引用。 -
@Najera 重点是没有
c.a或c.b。只有A和B引用了C,但反之则不然。不过还是谢谢。 -
检查 Linq 是否支持您的查询作为不相关的实体 stackoverflow.com/a/29923220/1486443
标签: c# nhibernate queryover