2017-09-13 9 views
0

私はコードをデバッグするとき、私はいつもquery.ToString()を使用してSQL文を取得しますが、SQL文には@p__linq__0@p__linq__1@p__linq__2などの多くのlinqパラメータが含まれています。 SQL Server Management Studioで直接実行することはできません。@p__linq__0を実際のパラメータ値に置き換える必要があります。それはコカマメです!ですから、linqまたはIQueryableオブジェクトから実行可能なSQL文を取得できますか?どうもありがとうございました!あなたはパラメータなしで文を取得することはできませんlinqまたはIQueryableオブジェクトから実行可能なSQL文を取得できますか?

SELECT * 
    FROM [dbo].[Customers] AS [Extent1] 
    WHERE ([Extent1].[IsCuepool] = @p__linq__0) AND 
    ([Extent1].[IsInvalid] = @p__linq__1) AND 
    ([Extent1].[IsRecovery] = @p__linq__2) AND 
    (([Extent1].[CustomerName] LIKE @p__linq__3 ESCAPE N'~') OR 
    ([Extent1].[QQ] LIKE @p__linq__4 ESCAPE N'~') OR 
    ([Extent1].[Phone] LIKE @p__linq__5 ESCAPE N'~') OR 
    ([Extent1].[BFAccount] LIKE @p__linq__6 ESCAPE N'~')) AND 
    (([Extent1].[CreateAt] = (LOWER(CASE WHEN (@p__linq__7 IS NULL) ...... 

答えて

2

SQLはいつものように以下のものです。 SQLは、コピー、貼り付け、実行を容易にする目的で作成されるのではなく、クエリを実行するために安全にするために作成されます。構成されたSQLクエリの代わりにパラメータを使用することは、SQLインジェクションを防ぐ重要なセキュリティ機能です。そのため、オブジェクトがどのように存在するのかという良い理由があります。

+0

のようにコピーするスクリプト

に変更を加える必要がないようにしましょうSEFEありがとうございます!私はSQLインジェクションを知っている。しかし、私が望むのは、query.GetExecutableSql()のようなメソッドであり、デバッグツールのメソッドであり、SQLインジェクションのセキュリティと矛盾するとは思わない。そして私は自分でQueryHelper.GetExecutableSql(クエリ)のようなメソッドを実装することさえできると思います。 entityframeworkにも同様のメソッドがあるのだろうか? –

+0

@Farwell_Liu私はそのような方法を知らない。そして、そういう方法を自分で作ることはできますが、EFと同じ方法で表現木を歩かなければならないので、おそらく簡単ではありません。 – Sefe

1

私はこのような状況に遭遇します。 私はtsqlでいくつかの変数をエンティティ・フレームワーク・スクリプトの上に定義しました。これは私がこの

DECLARE @p__linq__0 INT = 1; 
DECLARE @p__linq__1 INT = 2; 

SELECT * 
FROM [dbo].[Customers] AS [Extent1] 
WHERE ([Extent1].[IsCuepool] = @p__linq__0) AND 
([Extent1].[IsInvalid] = @p__linq__1) AND 
([Extent1].[IsRecovery] = @p__linq__2) AND 
(([Extent1].[CustomerName] LIKE @p__linq__3 ESCAPE N'~') OR 
([Extent1].[QQ] LIKE @p__linq__4 ESCAPE N'~') OR 
([Extent1].[Phone] LIKE @p__linq__5 ESCAPE N'~') OR 
([Extent1].[BFAccount] LIKE @p__linq__6 ESCAPE N'~')) AND 
(([Extent1].[CreateAt] = (LOWER(CASE WHEN (@p__linq__7 IS NULL) ...... 
+0

Dan Nguyenありがとう、あなたのアプローチは私のためにいくつかの助けがあります。 –

関連する問題