.net core 3.0 利用日志查看ef生成的SQL語句


轉自: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語句

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM