Мы переходим к EF4 и Linq в качестве нашего интерфейса db к Oracle 11g db. База данных настроена как чувствительная к регистру, но нам нужно искать как нечувствительный к регистру. В oracle с использованием "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
-----------------------
Результаты вроде бы говорят сами за себя, за исключением того, что последний пример может действительно пропустить записи.
Есть ли у кого-нибудь другие мысли о методах?
Спасибо, Саммер