1. ホーム
  2. c#

[解決済み] EF Coreで基礎となるSQLクエリを表示するには?

2023-06-29 09:58:43

質問

この記事の最後から3分15秒のところです。 .NET Core 2.0 リリース! 動画では、Diego Vega が Entity Framework Core 2.0 の新機能をデモで紹介しています。その一環として、基礎となる SQL のダンプが表示されます。 をコンソール アプリで表示します。 .

Stack Overflow で、基礎となるクエリを表示するために SQL プロファイラーを使用することを提案する多くの回答を見ました。しかし、Diego Vega が行ったように、アプリケーションでクエリを表示するにはどうしたらよいのでしょうか?

.NET 6 用の更新: EF ログは、開発時にデフォルトで有効になっています。以下を参照してください。 この GitHub の課題

更新: Diego が "Microsoft.EntityFrameworkCore.Database.Command": "Information" を追加しました。 を追加しました。 . 参照 どのようにEF Coreで基礎となるSQLクエリを表示しますか? を参照してください。

どのように解決するのですか?

ただ "Microsoft.EntityFrameworkCore.Database.Command": "Information" を追加します。 に変更することで、開発モードでのみログが記録されるようになります。通常、実稼働アプリですべてのクエリをログに記録することは望ましくありません。

{
  "ConnectionStrings": {
    "DefaultConnection": "Server=(localdb)\\mssqllocaldb;Database=MyDB-2;Trusted_Connection=True;MultipleActiveResultSets=true"
  },
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information"
     ,"Microsoft.EntityFrameworkCore.Database.Command": "Information"
    }
  },
  "AllowedHosts": "*"
}

SQLの出力は、コマンドウィンドウまたはVSの出力ウィンドウに表示されます。

参照 Entity Framework CoreのSQLロギング を参照してください。デフォルトでログを取らないのはバグです、参照 この GitHub の課題 .