2. EF Core 如何顯示執行的SQL語句
阿新 • • 發佈:2020-07-22
除錯的時候需要檢視執行的SQL 語句,我一般是使用 SQL Profiler,當然還有另外一種方式,就是配置EF 日誌,這兩種方式都比較簡單實用,SQL Profiler可以過濾掉很多自己不想看的日誌,可以只看某一個IP的日誌,而EF Core 的日誌則不可以;
SQL Profiler
TODO 我會在這裡新增一個附件,以後使用記得修改hostname
EF Core 日誌
設定啟動方式
在launchSettings.json中刪除IIS節點,使程式以控制檯應用啟動
在Program.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>(); }); } }
啟用顯示敏感資料
預設是隻能看到引數,看不到引數的值,在startup.cs 的ConfigureServices 方法中啟用顯示敏感資料:
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); services.AddDbContext<CompanyDbContext>(options => { //啟用顯示敏感資料 options.EnableSensitiveDataLogging(true); options.UseSqlServer(Configuration.GetConnectionString("CompanyDbContext")); }); }
配置 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" } }