.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语句