#nhibernate
#nhibernate
Вопрос:
Я начал создавать диалект для Interbase 7 в NHibernate.
Interbase SQL включает оператор, CONTAINING 'foo'
который является эквивалентом LIKE '%' 'foo' '%'
в других версиях SQL. LIKE
в Interbase чувствителен к регистру, тогда как CONTAINING
это не так, поэтому я бы хотел, чтобы диалект переводил LIKE
ситуации для использования CONTAINING
вместо этого.
Я действительно хорошо просмотрел примеры файлов диалекта, но не могу найти там ничего подходящего. Кто-нибудь может предоставить какие-либо указания?
Комментарии:
1. Если вам удастся завершить этот проект, сможете ли вы его где-нибудь опубликовать? -другой человек, использующий interbase
Ответ №1:
Нет способа заменить внутреннее использование LIKE на CONTAINING (за исключением исправления NH).
Вам нужно явно вызвать CONTAINING. Как только вы зарегистрируете его, он будет доступен как просто еще одна функция в HQL, использующая проекции.Функция SQLFunction в критериях и путем написания соответствующего генератора в LINQ (см. http://fabiomaulo.blogspot.com/2010/07/nhibernate-linq-provider-extension.html )
Ответ №2:
Вы можете использовать ‘UPPER’ для преобразования обеих сторон строк в верхний регистр.
http://www.ibprovider.com/forum/site/viewtopic.php?f=3amp;t=24