私はコードをデバッグするとき、私はいつも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) ......
のようにコピーするスクリプト
に変更を加える必要がないようにしましょうSEFEありがとうございます!私はSQLインジェクションを知っている。しかし、私が望むのは、query.GetExecutableSql()のようなメソッドであり、デバッグツールのメソッドであり、SQLインジェクションのセキュリティと矛盾するとは思わない。そして私は自分でQueryHelper.GetExecutableSql(クエリ)のようなメソッドを実装することさえできると思います。 entityframeworkにも同様のメソッドがあるのだろうか? –
@Farwell_Liu私はそのような方法を知らない。そして、そういう方法を自分で作ることはできますが、EFと同じ方法で表現木を歩かなければならないので、おそらく簡単ではありません。 – Sefe