& и |операторы в критериях NHibernate - PullRequest
0 голосов
/ 07 февраля 2011

Мне нужно написать с критериями NHibernate что-то вроде:

SELECT something FROM sometable
WHERE (something & 1) = 1

, где "что-то" - int.

Я не знаю, как написать часть WHERE с критериями:

ICriteria _Criteria = CreateCriteria();
_Criteria.Add(NHibernate.Criterion.Restrictions.Eq("something", ???);

можно в NHibernate?Если нет, существует какое-либо альтернативное решение, если мне нужно работать со значением в части ГДЕ?

1 Ответ

1 голос
/ 07 февраля 2011

Я не знаю, поддерживают ли запросы критериев явно побитовые операторы, но я не вижу этого в документации.

Один из вариантов - использовать HQL.См. этот SO-ответ , в котором говорится, что парсер HQL пройдет через '&'.Я на самом деле не пробовал это.

Другой вариант - вы можете определить функцию в SQL для выполнения побитовой работы и затем использовать ее в своем запросе.Это сообщение в блоге посвящено использованию собственных функций SQL от NH.Вы можете сделать функцию, подобную (еще не проверенную):

CREATE FUNCTION dbo.BitwiseAnd (@something integer, @andedwith integer) RETURNS bit as
        return select @something & @andedwith
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...