EF Core怎么调试查询问题 EF Core调试技巧与方法

admin 百科 11
EF Core 查询慢的关键在于可视化执行过程:启用 Microsoft.EntityFrameworkCore.Database.Command 日志查看 SQL 及参数,用数据库工具分析执行计划,检查 N+1 和笛卡尔爆炸,关闭懒加载暴露隐式查询,对比 AsNoTracking() 与跟踪查询差异。

EF Core怎么调试查询问题 EF Core调试技巧与方法-第1张图片-佛山资讯网

EF Core 查询慢,往往不是代码写得不对,而是你不知道它到底执行了什么 SQL、发了多少次请求、有没有重复加载。调试的关键不是猜,是看见——看见生成的 SQL、看见执行次数、看见数据怎么来的。

打开 SQL 日志,让 EF Core “开口说话”

这是最直接、最有效的第一步。EF Core 默认不输出 SQL,必须显式启用日志记录。

  • Program.csStartup.cs 中配置日志级别:添加 Microsoft.EntityFrameworkCore.Database.Command 的日志为 Information 或更高级别
  • 使用内置日志提供程序(如 Console)就能实时看到每条生成的 SQL 和参数值
  • 重点关注重复出现的相似语句——大概率是 N+1 查询的铁证
  • 注意看是否出现 SELECT *、没走索引的 WHERE 条件、或嵌套子查询过多

用数据库工具验证生成的 SQL

光看日志不够,要真正跑一遍。

  • 把日志里复制出的 SQL 粘贴到 SQL Server Management Studio、Azure Data Studio 或其他数据库客户端中执行
  • 查看执行计划(Execution Plan),确认是否用了索引、有没有全表扫描、JOIN 是否合理
  • 特别留意多层 Include 生成的 JOIN —— 如果返回几百行但实际只想要几十个主实体,大概率是笛卡尔爆炸

检查导航属性访问是否触发额外查询

N+1 问题肉眼难辨,但有迹可循。

标签: 工具 懒加载 microsoft 内存占用

发布评论 0条评论)

还木有评论哦,快来抢沙发吧~