Помощь с файлом диалекта в NHibernate

#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