NHibernate QueryOver对变量的Restrinctions

Fab*_*ber 2 nhibernate restrictions queryover

我有一点问题:我会在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))
Run Code Online (Sandbox Code Playgroud)

在SQL sintax中有类似的东西

WHERE @Variable = '' OR MyTable.MyField = @Variable
Run Code Online (Sandbox Code Playgroud)

所以,如果我的变量已填满,我将过滤我的字段.如果我的变量为空(或为空),我将选择每个记录而不过滤任何内容.

如何使用QueryOver和Restrinctions达到此结果?谢谢!

mat*_*ieu 7

如果变量为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))
Run Code Online (Sandbox Code Playgroud)