IFNULL в NHibernate - PullRequest
       8

IFNULL в NHibernate

1 голос
/ 21 августа 2009

Прямо сейчас у меня есть что-то подобное в NHibernate:

Expression.Like(property, value, MatchMode.Anywhere)

и генерирует SQL как:

property LIKE '%value%'

, что хорошо для этого случая. В другом случае я хочу SQL:

IFNULL(property LIKE '%value%', 0)

но я не вижу ни одного примера в руководстве, которое ссылается на IFNULL, и при этом я даже не могу найти никаких простых API-документов.

Я нашел Expression.Sql (), но только один пример в руководстве, и меня немного пугает использование чего-то, для чего я не видел реальных документов, и то, что я сам что-то делал с SQL, Я использую NHibernate, чтобы попытаться уйти от этого.

Есть ли лучший способ сделать IFNULL в NHibernate, чем Expression.Sql ()?

Ответы [ 2 ]

2 голосов
/ 21 августа 2009

Я предполагаю, что это в предложении WHERE, в этот момент IFNULL(property LIKE '%value%', 0) не является допустимым SQL, поскольку LIKE оценивается как true или false, и 0 не является ни тем, ни другим.

Я подозреваю, что вы действительно хотите property LIKE '%value%' OR property IS NULL?

Если это так:

.Add(
    Expression.Disjunction()
    .Add(Expression.Like(property, value, MatchMode.Anywhere))
    .Add(Expression.IsNull(property))
)
0 голосов
/ 21 августа 2009

Это не ответ как таковой, но я предлагаю вам поискать COALESCE(). Здесь Вы можете понять, почему.

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