私たちはEF4 & LinqをOracle 11g dbへのdbインターフェースとして使用しています。データベースは大文字と小文字を区別して設定されますが、大文字と小文字を区別しないで検索する必要があります。クエリで "UPPER"を使用するOracleでは、潜在的に非常に高価です。私が示された結果と、以下のオプションを見てきました:EF4 Linq Oracle11g照会なし大文字小文字の区別
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
-----------------------
結果はちょっと最後の例は、実際にレコードを逃すことができることを除いて、自分自身のために話します。
技術に関する他の考えがありますか?
おかげで、Sammer