8

SQL Server プロファイラーを使用するときによく混乱することを最初に認めます。

そうは言っても、Db Set の Include メソッドを試して生成された SQL を確認するために起動することにしました。アルバム、アーティスト、およびジャンルがある音楽ストアの例を調べていました。

私が気づいたことの 1 つは、一部の呼び出しにはSQL:BatchCompletedのイベント クラスがあり、他の呼び出しにはRPC:Completedのイベント クラスがあることです。RPC イベント クラスの下で遅延読み込み呼び出しがトレースされているように見えました。

これら 2 つのイベント クラスの違いは何ですか? また、遅延読み込みによって RPC:Completed のイベント クラスが発生するのはなぜですか?

4

2 に答える 2

5

BatchCompleted は、TSQL コード (select など) が完了したことを意味します。RPC:Completed は、ストアド プロシージャが完了したことを意味します。EF が sp_executesql を使用して SQL コードを動的に実行するため、RPC:Completed が取得される可能性があります。

于 2012-10-26T16:18:27.040 に答える
4

パラメータ化がすべてです。動的パラメーターがない場合は SQL バッチとして実行され、ある場合は RPC として実行されます。この設定により、クエリ プランを最適に再利用できます。

参照: https://blogs.msdn.microsoft.com/bindeshv/2010/07/12/ef-query-execution-pattern-usage-of-sp_executesql-vs-direct-execution-of-sql-statement/

于 2016-03-10T16:29:20.013 に答える