using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Query.Internal;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Query;
public static void Main()
var query = db.Database.SqlQueryRaw<string>("SELECT 'x' AS Value");
Console.WriteLine(IsSplitQuery(query, db));
query = query.AsSplitQuery();
Console.WriteLine(IsSplitQuery(query, db));
public static bool IsSplitQuery(IQueryable query, DbContext context)
var infra = ((IInfrastructure<IServiceProvider>)context);
var compContext = (RelationalQueryCompilationContext)infra.GetService<IQueryCompilationContextFactory>().Create(false);
var visitor = new RelationalQueryMetadataExtractingExpressionVisitor(compContext);
visitor.Visit(query.Expression);
return compContext.QuerySplittingBehavior == QuerySplittingBehavior.SplitQuery;
public class MyDb : DbContext
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
optionsBuilder.UseSqlServer("Server=.;Integrated Security=True");