как сделать по модулю по критериям - PullRequest
0 голосов
/ 13 мая 2019

Мне нужно проверить, является ли значение поля четным, я использую SqlLite в качестве базы данных, я попробовал с

var sqlf= Projections.SqlFunction(“mod”, NHibernateUtil.Int32, Projections.ProjectionList().Add(Projections.Property(nameof(GsProcedure.Number))).Add(Projections.Constant(“2”)));

critBuilder.Add (Restrictions.Eq (sqlf, 0));

но это создает запрос, подобный следующему: «WHERE mod (this_.PRO_NO AS y0_, 2) = 0», и он не выполняется sqlLite, который принимает только «где PRO_NO% 2 = 0». Знаете ли вы, что должноЯ делаю?

var sqlf = Projection.SqlFunction («mod», NHibernateUtil.Int32, Projection.ProjectionList (). Add (Projection.Property (nameof (GsProcedure.Number))). Add (Projection.Constant( «2»)));attributeBuilder.Add (Restrictions.Eq (sqlf, 0));

, но это создает запрос, подобный следующему: «WHERE mod (this_.PRO_NO AS y0_, 2) = 0», и он не выполняется sqlLiteкоторый принимает только «где PRO_NO% 2 = 0»

1 Ответ

0 голосов
/ 13 мая 2019

Вы не должны переносить параметры проекции для Projections.SqlFunction в ProjectionList:

var sqlf= Projections.SqlFunction(
 "mod",
 NHibernateUtil.Int32,
 Projections.Property(nameof(GsProcedure.Number)), 
 Projections.Constant("2"));

Кроме этого, ваш запрос выглядит правильно и должен работать с NHibernate 3.2. Убедитесь, что вы используете SQLiteDialect в заводской конфигурации сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...