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. コードの改善を確認
- 4. Androidバイトコード確認コード
- 5. エンティティフレームワークのコード、
- 6. 重複レコードを防ぐMVCエンティティフレームワークの確認
- 7. コードMaster Mergesでプルリクエストを確認する
- 8. WooCommerceでproduct_typeを確認するSQLクエリ
- 9. 予約コードの確認?
- 10. SQL Server:ロールメンバーシップの確認
- 11. エンティティフレームワークのコード生成
- 12. コールSQLビュー|エンティティフレームワーク
- 13. エンティティフレームワークのコードを最初に
- 14. テーブル内のSQLの位置を確認
- 15. 私のSQLのフィールドを確認
- 16. 空文字列を確認するSQL文 - T-SQL
- 17. T-SQLのFILESTREAM共有名を確認
- 18. エンティティフレームワーク。 SQLグループをEFグループにする
- 19. エンティティフレームワークとSQL Serverセーブポイント
- 20. Linq to SQL VSエンティティフレームワーク
- 21. PL/SQLがSQLの実行を確認したらOKかどうかを確認しますか?
- 22. コードでのAndroidマニフェストパラメータの確認方法
- 23. エンティティフレームワークSQLクエリの操作
- 24. Cでのsqlコマンドの戻り確認#
- 25. sqlクエリをエンティティフレームワークsqlに変換
- 26. SQLクエリで2つの別個のものを確認する
- 27. Devise:確認後にコードを実行
- 28. Retrofit2 - グローバルに応答コードを確認
- 29. アクセス許可を使用するコードを確認する
- 30. 料金を作成する前にCVCコードを確認する
あなたのコードにすべてのLinq(SQL GENERATED)クエリを記録することができます。これをファイルに記録することができます –