You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

.NET Core 8发布版Entity Framework Core自动记录SQL查询至事件日志原因排查

问题

我发布了一个使用Entity Framework Core访问SQL Server数据库的.NET Core 8 Web应用,应用运行正常,但在事件日志中发现大量Entity Framework Core执行的查询信息条目。注册DbContext时的代码如下:

services.AddDbContext<SecuWebModulesVisitorControlContext>(options =>
{
    options.UseSqlServer(configuration.GetConnectionString("Modules.VisitorControl"), o => o.UseQuerySplittingBehavior(QuerySplittingBehavior.SplitQuery));
#if DEBUG
    options.LogTo(x => Debug.WriteLine(x));
#endif
});

发布编译时,上述LogTo方法不会被调用,请问这是什么原因?

解答
  • DEBUG条件编译的限制:你写的LogTo调用被#if DEBUG和#endif这对条件编译指令包裹了。只有当项目以DEBUG模式编译时,这段代码才会被包含到最终程序里;而发布编译默认使用的是RELEASE模式,编译器会直接跳过这段代码,所以LogTo自然不会被调用。
  • 事件日志中查询日志的来源:事件日志里的EF Core查询日志和你这段LogTo代码无关。这是因为EF Core默认的日志配置已经开启了查询相关的日志记录,并且日志输出目标包含了事件日志,所以即使你没在RELEASE模式下配置LogTo,这些日志依然会被输出。

内容的提问来源于stack exchange,提问作者jstuardo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.22 16:28:15