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

如何禁用EF Core的QuerySplittingBehavior.SingleQuery日志警告

方案1:直接在EF Core配置层面禁用该警告(最推荐,仅屏蔽指定单条警告,不影响其他正常警告输出)

你只需要在注册DbContext的代码中添加警告忽略配置即可:

builder.Services.AddDbContext<你的DbContext类名>(options =>
    options.UseSqlServer("你的数据库连接字符串")
        // 新增这一行忽略指定警告
        .ConfigureWarnings(warnings => warnings.Ignore(RelationalEventId.MultipleCollectionIncludeWarning))
);

注意需要提前引入命名空间 Microsoft.EntityFrameworkCore.Diagnostics。

方案2:通过appsettings.json日志配置批量屏蔽EF Query分类的所有警告

如果不想修改EF配置,也可以单独抬高EF Query命名空间的日志输出级别,让该分类下的Warning日志不会被写入:
修改你现有的Logging配置如下:

"Logging": {
  "LogLevel": {
    "Default": "Trace",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information",
    "Microsoft.EntityFrameworkCore": "Warning",
    // 新增这一行,仅EF Query分类下Error及以上级别日志才会输出
    "Microsoft.EntityFrameworkCore.Query": "Error",
    "IdentityServer4": "Information"
  }
}

该方案的缺点是会屏蔽EF Query分类下所有的Warning日志,如果你还需要接收该分类下的其他警告不建议用。

方案3:在NLog配置中按内容精准过滤单条警告

如果你只想在日志输出环节过滤这条警告,不修改EF和全局日志配置,可以直接在NLog的规则里添加内容匹配过滤:
找到你的NLog配置文件(一般为nlog.config),在对应日志规则中添加过滤规则:

<logger name="Microsoft.EntityFrameworkCore.Query" minlevel="Warn" writeTo="你配置的日志输出目标名">
  <filters>
    <!-- 匹配到对应警告内容就直接丢弃 -->
    <when condition="contains('${message}', 'Compiling a query which loads related collections for more than one collection navigation')" action="Ignore" />
  </filters>
</logger>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 15:45:04