Символы NHibernate, SQLite и кириллицы: чувствительность к регистру и резервные запросы - PullRequest
0 голосов
/ 12 августа 2010

Я запрашиваю базу данных SQLite, используя NHibernate.Как правило, я хочу делать строковые запросы без учета регистра.Недавно я обнаружил, что хотя я могу вставить строку с символами кириллицы, я не могу выбрать ее с помощью запроса без учета регистра.Вот как выглядит запрос:

string foo = "foo";
IList<T> list = session.CreateCriteria(typeof(T)).
    Add(Expression.Eq("Foo", foo).IgnoreCase()).List<T>();

Однако я могу выбрать строку, используя приведенный выше запрос, если IgnoreCase () удален.Наивным исправлением будет проверка, если list.Count == 0 после первого запроса, и создание последующего запроса с учетом регистра.Основным недостатком этого подхода является то, что запрос несуществующих строк является достаточно распространенной операцией, которая теперь будет состоять из двух запросов.который будет выбирать из столбца Foo без учета регистра, но также будет выбирать строки, содержащие символы кириллицы?

1 Ответ

3 голосов
/ 12 августа 2010

Запросы без учета регистра по умолчанию работают только с символами ASCII в SQLite.

См. Этот FAQ: Нечувствительное к регистру сопоставление символов Unicode не работает.

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