NHibernate QueryOver Ограничения на переменную - PullRequest
2 голосов
/ 20 мая 2011

У меня небольшая проблема: я бы вставил условие в свой 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 что-то вроде

WHERE @Variable = '' OR MyTable.MyField = @Variable

Итак, если моя переменная заполнена, я буду фильтровать свое поле.Если моя переменная пуста (или равна нулю), я выберу каждую запись без фильтрации какого-либо содержимого.

Как мне достичь этого результата, используя QueryOver и Restrinctions?Спасибо!

1 Ответ

7 голосов
/ 20 мая 2011

Если переменная равна нулю или не установлена, не добавляйте ее в свой запрос.

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))
...