轉自:https://www.cnblogs.com/fancyblogs/p/10535214.html
EF Core 沒有直接提供像 EF6 那樣方便的在日志中記錄最終生成的 SQL 的功能,可以通過官方提供的日志記錄(Microsoft.Extensions.Logging)實現.
一. 使用 Microsoft.Extensions.Logging.Debug 查看生成的SQL語句
1. 創建項目, 連接數據庫(過程略,參考文檔)
2. 通過nuget添加引用 Microsoft.Extensions.Logging.Debug
3. 找到EF的DbContext文件,頭部引用
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Debug;
4. 在DbContext文件里定義一個日志工廠
public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] { new DebugLoggerProvider() });
5. 在DbContext文件OnConfiguring連接字符前添加日志UseLoggerFactory(MyLoggerFactory)
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseLoggerFactory(MyLoggerFactory).UseMySql("Server=xxx;User Id=xxx;Password=xxx;Database=bebefocus;Persist Security Info=True;"); } }
6. 運行查看 在輸出面板里查看
二. 使用 Microsoft.Extensions.Logging.Console 查看生成的SQL語句
1. 利用nuget添加引用Microsoft.Extensions.Logging.Console
2. 在DbContext文件里添加引用
using Microsoft.Extensions.Logging; using Microsoft.Extensions.Logging.Console;
3. 添加日志工廠
public static readonly LoggerFactory MyLoggerFactory = new LoggerFactory(new[] { new ConsoleLoggerProvider((category, level) => category == DbLoggerCategory.Database.Command.Name&& level == LogLevel.Information, true) });
4. 連接字符串中添加日志
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { if (!optionsBuilder.IsConfigured) { optionsBuilder.UseLoggerFactory(MyLoggerFactory).UseMySql("Server=xxx;User Id=xxx;Password=xxx;Database=bebefocus;Persist Security Info=True;"); } }
5. 查看生成的SQL語句
控制台dotnet run運行程序,
執行有查詢語句的方法 控制台自動打印出SQL語句