Мы переходим к 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
-----------------------
Результаты говорят сами за себя, за исключением того, что последний пример может фактически пропустить записи.
Есть ли у кого-нибудь другие мыслипо методикам?
Спасибо, Саммер