流畅的nHibernate限制.似乎不能正常工作
本文关键字:常工作 工作 不能 nHibernate 限制 | 更新日期: 2023-09-27 17:50:42
我有关联:
TableA 1 --- * TableB
我尝试构建一个查询,它返回TableA
项的列表,其所有项(TableB
)在列X
和Y
中具有值。但是这个查询似乎忽略了not null condition in the X and Y column
,为什么?
或者,如何重新构建该查询,可能是使用子查询?
TableA tabA = null;
TableB tabB = null;
var s = Session.QueryOver<TableA>(() => tabA)
.JoinAlias(() => tabB.TableBItems, () => tabB, JoinType.InnerJoin)
.Where(Restrictions.Conjunction()
.Add(() => tabA.SomeID == 123)
.Add(() => tabA.SomeNullableDate != null)
)
.Where(Restrictions.Not(
Restrictions.Conjunction()
.Add(() => tabB.X == null)
.Add(() => tabB.Y == null)
))
.List<TableA>();
使用子查询过滤掉tabB-Items中具有空值的TableA元素
var subquery = QueryOver.Of<TableA>()
.JoinQueryOver(tabA => tabA.TableBItems)
.Where(tabB => tabB.X == null || tabB.Y == null)
.Select(Projections.Id());
var s = Session.QueryOver<TableA>()
.Where(tabA => tabA.SomeID == 123 && tabA.SomeNullableDate != null)
.WhereRestrictionOn(Projections.Id()).NotIn(subquery)
.JoinQueryOver(tabA => tabA.TableBItems)
.Where(tabB => tabB.X != null && tabB.Y != null)
.List<TableA>();