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

EF Core如何检查查询是否已应用AsSplitQuery()?

检查EF Core查询是否启用拆分查询的简洁方案

你可以通过访问EF Core查询的注解集合,直接判断是否已应用AsSplitQuery(),无需解析ToQueryString()的输出内容。

实现扩展方法

编写一个简单的扩展方法,从IQueryable中提取查询元数据并检查拆分查询标记:

using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query;

public static class QueryableSplitCheckExtensions
{
    public static bool IsUsingSplitQuery(this IQueryable query)
    {
        var queryProvider = query.Provider as IAsyncQueryProvider;
        if (queryProvider == null)
            return false;
            
        var queryContext = queryProvider.CreateQuery(query.Expression);
        return queryContext.QueryAnnotations.Any(anno => anno is SplitQueryAnnotation);
    }
}

使用示例

// 带拆分查询的示例
var splitQuery = dbContext.Products
    .Include(p => p.Category)
    .AsSplitQuery();
Console.WriteLine(splitQuery.IsUsingSplitQuery()); // 输出 True

// 未启用拆分查询的示例
var regularQuery = dbContext.Products.Include(p => p.Category);
Console.WriteLine(regularQuery.IsUsingSplitQuery()); // 输出 False

原理说明

调用AsSplitQuery()时,EF Core会自动为查询添加SplitQueryAnnotation注解。通过直接检查查询元数据中的注解集合,就能快速判断拆分查询是否启用,比解析SQL提示信息高效得多。

内容的提问来源于stack exchange,提问作者Goran Petrović

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 05:39:56