我有一个小问题:我会将一个条件插入我的QueryOver中,该条件还会检查变量值。像这样:
var qOver = QueryOver.Of<MyModel>(() => myMod)
.JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin)
.Where(Restrictions.Or(
Restrictions.On(() => myMod.ID).IsIn(MyIDList)
, Restrictions.On(MyIDList == null))
在SQL sintax中,类似
WHERE @Variable = '' OR MyTable.MyField = @Variable
因此,如果我的变量已满,我将在字段上进行过滤。如果变量为空(或为null),则将选择每条记录,而不过滤任何内容。
如何使用QueryOver和Restrinctions达到此结果?
谢谢!
最佳答案
如果变量为null或未设置,请不要将其添加到查询中。
var qOver = QueryOver.Of<MyModel>(() => myMod)
.JoinAlias(() => myMod.SubMod, () => subMod, JoinType.LeftOuterJoin);
if( MyIDList != null )
qOver = qOver.Where(Restrictions.Or(Restrictions.On(() => myMod.ID).IsIn(MyIDList))
关于nhibernate - NHibernate QueryOver重新定义变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6069974/