using System.Data.Common;
using Microsoft.EntityFrameworkCore.Diagnostics;
namespace BuildFlow.Workflow.Tests.Performance;
/// 仅统计读取 b_form_data 的分页 SELECT 命令。
public sealed class CountingExportPageInterceptor : DbCommandInterceptor
{
/// 已执行的表单数据分页查询数。
public int PageSelectCount { get; private set; }
public override InterceptionResult ReaderExecuting(
DbCommand command,
CommandEventData eventData,
InterceptionResult result)
{
Count(command);
return result;
}
public override ValueTask> ReaderExecutingAsync(
DbCommand command,
CommandEventData eventData,
InterceptionResult result,
CancellationToken cancellationToken = default)
{
Count(command);
return ValueTask.FromResult(result);
}
private void Count(DbCommand command)
{
if (command.CommandText.TrimStart().StartsWith("SELECT", StringComparison.OrdinalIgnoreCase)
&& command.CommandText.Contains("b_form_data", StringComparison.OrdinalIgnoreCase))
{
PageSelectCount++;
}
}
}