在ASP.NET Core使用Entity Framework Core的日誌顯示sql語句

在開發中,我們想在調試中查看EF Core執行的sql語句,可以使用SQL Studio Manager Tools工具,另一種方式是使用EF Core提供的日誌。
在ASP.NET Core使用Entity Framework Core的日誌的步驟:

1. 設置啓動方式

在launchSettings.json中刪除IIS節點,使程序以控制檯應用啓動。

2. 在Programm.cs配置日誌

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;

namespace CompanyApp
{
    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .ConfigureLogging((hostingContext, logging) =>
                {
                    logging.AddConfiguration(hostingContext.Configuration.GetSection("Logging"));
                    logging.AddConsole();
                    logging.AddDebug();
                    logging.AddEventSourceLogger();
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }
}

3. 默認日誌不顯示敏感數據,這樣查看不到sql語句執行的參數,如果想看到參數,需要在Startup.cs的ConfigureServices方法中啓用顯示敏感數據:

public void ConfigureServices(IServiceCollection services)
{
    services.AddControllersWithViews();

    services.AddDbContext<CompanyDbContext>(options => {
        //啓用顯示敏感數據
        options.EnableSensitiveDataLogging(true);
        options.UseSqlServer(Configuration.GetConnectionString("CompanyDbContext"));
    }); 
}

4. 配置appsettings.json日誌選項:

{
  "Logging": {
    "LogLevel": {
      "Default": "Information",
      "Microsoft": "Warning",
      "Microsoft.Hosting.Lifetime": "Information",
      "Microsoft.EntityFrameworkCore.Database.Command": "Information"
    }
  },
  "AllowedHosts": "*",
  "ConnectionStrings": {
    "CompanyDbContext": "Server=(localdb)\\mssqllocaldb;Database=CompanyDb;Trusted_Connection=True;MultipleActiveResultSets=true"
  }
}
發佈了153 篇原創文章 · 獲贊 44 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章