EF4 Linq Oracle11g делает запросы без учета регистра - PullRequest
0 голосов
/ 21 января 2011

Мы переходим к EF4 и Linq как нашему интерфейсу дБ к Oracle 11g дБ.База данных настроена как чувствительная к регистру, но мы должны искать как нечувствительную к регистру.В оракуле использование «UPPER» в запросе потенциально очень дорого.Я рассмотрел следующие варианты с указанными результатами:

ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE))

generates SQL Where clause:

WHERE TABLE.FIELD = VARIABLE
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE.ToUpper()))

generates SQL Where clause:

WHERE TABLE.FIELD = (UPPER(VARIABLE))
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.ToUpper().Equals(VARIABLE.ToUpper()));

generates SQL Where clause:

WHERE (UPPER(TABLE.FIELD)) = (UPPER(VARIABLE))
---------------------
ChangeEntities.TABLE.Where(x => x.FIELD.Equals(VARIABLE, StringComparison.CurrentCultureIgnoreCase))

generates SQL Where clause:

WHERE TABLE.FIELD = VARIABLE
-----------------------

Результаты говорят сами за себя, за исключением того, что последний пример может фактически пропустить записи.

Есть ли у кого-нибудь другие мыслипо методикам?

Спасибо, Саммер

Ответы [ 2 ]

0 голосов
/ 24 января 2011

Каким провайдером данных вы пользуетесь? Попробуйте прочитать эту статью (http://www.orafaq.com/node/91) - может быть, она вам поможет.

0 голосов
/ 22 января 2011

Вам нужно либо изменить параметры сортировки столбцов в метаданных БД, либо указать их в запросе.Единственный способ указать это в запросе в EF - это использовать методы ESQL или Query Builder.Лучшая идея - изменить параметры сортировки для самого столбца БД.

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