在我们使用ef core的时候,有时候我们需要查看ef core生成的sql语句以便我们可以做进一步的分析处理。
修改日志级别输出日志
在配置文件appsettings.json中添加如下语句
1
2
3
4
5
6
7
8
"Logging": {
"LogLevel": {
"Default": "Information",
"Microsoft": "Warning",
"Microsoft.Hosting.Lifetime": "Information",
++ "Microsoft.EntityFrameworkCore.Database": "Information"
}
}
这里相当于修改了ef core的默认输出日志级别,这样就会把sql输出,上面的配置对serilog依然有效
显示sql中的参数值
如果你的sql包含了参数,但是这样是不会输出参数值,参数值都是”?”,这是因为ef默认会对数据进行保护,如果需要显示参数值需要在DbContext中添加如下配置。
1
2
3
4
5
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
++ optionsBuilder.EnableSensitiveDataLogging();
base.OnConfiguring(optionsBuilder);
}
参考资料
本文会经常更新,请阅读原文: https://dashenxian.github.io/post/EF-Core%E5%9C%A8%E6%97%A5%E5%BF%97%E4%B8%AD%E8%BE%93%E5%87%BAsql%E8%AF%AD%E5%8F%A5 ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名 小神仙 (包含链接: https://dashenxian.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 (125880321@qq.com) 。