EF / EF CORE 打印SQL日志|打印日志
EF CORE#
public static readonly ILoggerFactory MyLoggerFactory = LoggerFactory.Create(builder => { builder.AddConsole(); });
services.AddDbContext<WordsOnline.Customer.Dashboard.Entity.DataContext>(options =>
{
options.UseMySql(configuration["ConnectionString"], mySqlOptionsAction: sqlOptions =>
{
sqlOptions.MigrationsAssembly(typeof(Startup).GetTypeInfo().Assembly.GetName().Name);
}).UseLoggerFactory(MyLoggerFactory);
}, ServiceLifetime.Scoped);
EF#
在 VS 调试的时候,如果我们项目中使用的是 EntityFramework,查看 SQL 执行代码就不像 ADO.NET 那样直观了,我们需要设置下,可以参考下:
How can I log the generated SQL from DbContext.SaveChanges() in my Program?
如何:显示生成的 SQL
按照 MSDN 的设置,发现 DbContext 并没有 Log 属性,应该是 EntityFramework 版本问题,stackoverflow 中的“context.Database.Log = Console.WriteLine;”,是我们想要的答案,但是只能用于控制台应用程序,我们调试项目输出应该使用:Debug.WriteLine,但是这样又会抱如下错误:
异常信息:无法用“System.Diagnostics.Debug.WriteLine(string)”创建委托,因为它具有 Conditional 特性。
正确代码
根据 Log 属性的类型 Action,我们将代码修改下就可以:
Context.Database.Log = new Action<string>(q => System.Diagnostics.Debug.WriteLine(q));
这样调试项目的时候,我们就可以在“输出窗口”,看到 EntityFramework 生成并执行的 SQL 代码了。
经验#
!打印的是该语句后面的SQL,之前的不记录
参考:#
田园里的蟋蟀:EntityFramework 如何查看执行的 SQL 代码? https://www.cnblogs.com/xishuai/p/entityframework_debug_sql.html
作者:【唐】三三
出处:https://www.cnblogs.com/tangge/p/15576250.html
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2020-11-19 asp,net core 3.1 的过滤器(筛选器)