我有一个小问题:我会将一个条件插入我的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/

10-11 01:37