ANTSなどの類似の代替エンティティのようなEntity Frameworkプロファイラを使用し始めました。プロファイラが分析された後、Entity Frameworkによって生成されたSQLクエリ形式のすべてのEntity Frameworkボトルネックが一覧表示されます。しかし、私はコード内のどのクエリを追跡することができません。そのSQLクエリを実行するコードの行を知ることは可能ですか?エンティティフレームワークのSQLコードを確認する
0
A
答えて
1
私はANTSにこれをさせることはできません(Redgateのみ)。
ただし、プロファイリング時または非プロファイリング時に、ログAction
をコンテキストのDatabase.Logプロパティに添付することで、すべてのSQL文を常にログできます。
、あなたはまた、その時点でのスタックトレースをログに記録して、デバッグログで報告されたSQLのボトルネックを見つけることを試みること:
using (var db = new MyContext())
{
db.Database.Log = s =>
{
Debug.WriteLine(s);
if (s.StartsWith("SELECT"))
Debug.WriteLine("\nStack trace:\n" +
string.Join("", new StackTrace(3).GetFrames().ToList()));
};
// LINQ statements here.
}
私が使用するいくつかのコメント
new StackTrace(3)
は、ロギングプロセス自体をカバーする最初の数フレームをスキップします。スタックトレースのどこかに、ログに記録されたSQL文を起動したC#メソッドがあります。- これは、
SELECT
コマンドのスタックトレースのみを記録します。通常、それらは分析したいものです。
コンテキストファクトリからコンテキストインスタンスを取得して、このロギングコードを1回だけ書き込むことをお勧めします。ログのアクションを条件付きでif DEBUG
コンパイラ指令で追加することができます。
関連する問題
- 1. SQLログインの確認 - ユーザータイプの確認
- 2. コードのビルド構成を確認する
- 3. 値のSQLデータベースを確認する
- 4. コードの改善を確認
- 5. エンティティフレームワークのコード、
- 6. Androidバイトコード確認コード
- 7. 重複レコードを防ぐMVCエンティティフレームワークの確認
- 8. コードMaster Mergesでプルリクエストを確認する
- 9. WooCommerceでproduct_typeを確認するSQLクエリ
- 10. Oracle SQL DeveloperのC#コードで実行されたクエリを確認するには?
- 11. 予約コードの確認?
- 12. SQL Server:ロールメンバーシップの確認
- 13. SQLクエリでNULLの確認
- 14. エンティティフレームワークのコード生成
- 15. コールSQLビュー|エンティティフレームワーク
- 16. エンティティフレームワークのコードを最初に
- 17. テーブル内のSQLの位置を確認
- 18. 私のSQLのフィールドを確認
- 19. 空文字列を確認するSQL文 - T-SQL
- 20. エンティティフレームワーク。 SQLグループをEFグループにする
- 21. SQL:行の最大数を確認
- 22. SQL Server 2012のランタイム値を確認
- 23. T-SQLのFILESTREAM共有名を確認
- 24. Linq to SQL VSエンティティフレームワーク
- 25. エンティティフレームワークとSQL Serverセーブポイント
- 26. エンティティフレームワークSQLクエリの操作
- 27. linq式エンティティフレームワークへのSQLコマンド
- 28. PL/SQLがSQLの実行を確認したらOKかどうかを確認しますか?
- 29. sqlクエリをエンティティフレームワークsqlに変換
- 30. 従業員のすべてのレコードを確認するSQLクエリ
あなたのコードにすべてのLinq(SQL GENERATED)クエリを記録することができます。これをファイルに記録することができます –