0

Kendo Grid のツールバーに埋め込まれた jQuery AutoComplete からデータをフィルター処理し、それとページを並べ替える単純な要求があります。これが呼び出しを行うコードです。

Service.Get(s=> s.Name.Contains("Alcurt QI, In"), o => o.Name, 1, 15)

Web から入力した場合、結果の SQL は正しいですが、追加の一重引用符が埋め込まれています。SQL は、SQL プロファイラーを使用してキャプチャされます。結果のスニペットを次に示します。

WHERE [Extent1].[Name] LIKE @p__linq__0 ESCAPE N''~''
)  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[Name] ASC',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'%''Alcurt QI, In''%'

Name 列は nvarchar です。

LIKE を使用していることがわかりますが、余分な引用符に注意してください

@p__linq__0=N'%''Alcurt QI, In''%'

余分な引用符を削除すると、クエリは正常に機能します。SQLマネージャーでテストしました。

次に、HttpContext をモックする単体テストを作成し、同じコントローラー アクションを呼び出すと、SQL は正常に動作します。これは、欠落している引用符ではなく、そこからのSQLです。

WHERE [Extent1].[Name] LIKE @p__linq__0 ESCAPE ''~''
)  AS [Project1]
)  AS [Project1]
WHERE [Project1].[row_number] > 0
ORDER BY [Project1].[Name] ASC',N'@p__linq__0 varchar(8000)',@p__linq__0='%Alcurt QI, In%'
  • OSはWindows7です
  • ビジュアル スタジオ 2012
  • Nuget、5.0、dBContext のエンティティ フレームワーク
  • システムは MVC 4 ntier です
  • ツールバーにオートコンプリートを備えたリクエスター剣道グリッド。

EntityFrameworkのバージョン等は確認済みです。

なんで?

4

1 に答える 1

1

結果を確認した後、私は自分が見ているものを信じることができませんでした. だから私は一歩下がって、引用符のすぐ隣に一重引用符があった最初から新鮮な見方をしました。したがって、システムは設計どおりに機能していました。

于 2013-02-23T21:34:25.757 に答える