2017-06-08 18 views
1

リバースPOCO生成クラスを使用して.NETアプリケーションで作業していて、部分一致が見つかったときにMicrosoft SQL Serverデータベースから値を取得するlinqクエリを作成しようとしています。ユーザの入力。 例:ユーザーの入力:12345 は 123456結果をもたらすであろう、 3434123456、 12345、 123456789001010、 など#LinqはLIKE @ p__linq__0を追加します。ESCAPE '〜'

が、LINQクエリで.containsを使用すると、SQLステートメントに評価され、に、以下に示すようなものが追加されますこの文の最後に: LIKE @ p__linq__0 ESCAPE '〜'}

このESCAPE '〜'は14-30秒の実行時間を追加し、タイムアウトの問題を引き起こします。

誰かが私にこれを手伝ってもらえるといいですね。

+1

可能な複製(https://stackoverflow.com/questions/25931201/linq-to-sql:ここ

はSqlMethods.Likeのためのドキュメントへのリンクあり-startwith-performance-indexed-columns) – Fran

+0

どのデータベースを使用していますか?私はMS SQL Serverでそれを見ていないよ。 –

+0

[LINQはクエリ内に 'ESCAPE N'〜 'を挿入する]の可能な複製(https://stackoverflow.com/questions/28616733/linq-inserts-escape-n-in-query) –

答えて

1

.contains(inputVariable)などの.contains()の変数を使用すると、フィルタがエスケープされます。たとえば、.contains('12345') などの定数を入力するか、.contains()の代わりにSqlMethods.Like()を使用して比較を実行できます。 [パフォーマンスインデックス付きの列startwith LINQ to SQLは]のSqlMethods.Like

+0

ちょっとロビン、返信いただきありがとうございます。私は現在、逆POCOジェネレータクラスを使用してSQL Serverデータベースに接続しています。だから私はSqlMethods.Like()を使用することができません。それ以上の助けをいただければ幸いです。 – rockingmeister

関連する問題