2017-12-21 10 views
-4

'[email protected]'をクライアント側から入力として渡しますが、バックエンドのEFは値を'[email protected]'に変換していますコマンドを実行する前に_の前に~がある)。 EFがこのようにしている理由を助けてくれますか?Entity Frameworkが入力値を '〜'文字の前に '〜'を付けて更新する理由

+2

あなたは何を意味するのか'値を変換する'?これはいつ起こるのですか? Entity Frameworkはデフォルトでこれを実行していません。それは百万の異なるものになる可能性があります。なぜあなたはそれがEFだと思いますか? – nbokmans

+0

該当する場合は、SQLの翻訳とともに、完全な照会を提供してください。 – dasblinkenlight

+2

エンコーディングが異なる可能性がありますか? UTF8/UTF16の代わりに古いISOコードページを使用しているシステムを使用している可能性があります。 –

答えて

2

_は、LIKE式の1文字の一致に使用される特殊文字であるため、EFはエスケープ文字として~を追加しています。 %文字についても同じことが行われます。

私はIDbCommandInterceptorを継承し、DBCommandの値は、あなたがSQLをインターセプトする場合は、次のように対応するLIKEが見えるはずです

を持っているかどうか確認するためにReaderExecutingを使用:

WHERE ... AND t1.EmailField LIKE @p1 ESCAPE `~` 
+0

'LIKE'を生成する' string'に 'Contains'を使用しているのは私の推測です。これが当てはまらない場合は、私の答えを削除します。 – dasblinkenlight

+0

はい.. **私のLink to entityに** contains **を使用しています。だからあなたは私の入力に%または_を使用すると、EFは〜とエスケープを〜を付け加えます。 – Satish

+0

@Satishはい、そうです。確認するには '%'を使ってみてください。 EFによって生成されたSQLをキャプチャする方法を知っていますか? – dasblinkenlight

関連する問題