В исходной реализации по умолчанию AddDbContextPool использует AddScoped
public static IServiceCollection AddDbContextPool<TContextService, TContextImplementation>(
[NotNull] this IServiceCollection serviceCollection,
[NotNull] Action<IServiceProvider, DbContextOptionsBuilder> optionsAction,
int poolSize = 128)
where TContextService : class
where TContextImplementation : DbContext, TContextService
{
Check.NotNull<IServiceCollection>(serviceCollection, nameof (serviceCollection));
Check.NotNull<Action<IServiceProvider, DbContextOptionsBuilder>>(optionsAction, nameof (optionsAction));
if (poolSize <= 0)
throw new ArgumentOutOfRangeException(nameof (poolSize), CoreStrings.InvalidPoolSize);
EntityFrameworkServiceCollectionExtensions.CheckContextConstructors<TContextImplementation>();
EntityFrameworkServiceCollectionExtensions.AddCoreServices<TContextImplementation>(serviceCollection, (Action<IServiceProvider, DbContextOptionsBuilder>) ((sp, ob) =>
{
optionsAction(sp, ob);
CoreOptionsExtension extension = (ob.Options.FindExtension<CoreOptionsExtension>() ?? new CoreOptionsExtension()).WithMaxPoolSize(new int?(poolSize));
((IDbContextOptionsBuilderInfrastructure) ob).AddOrUpdateExtension<CoreOptionsExtension>(extension);
}), ServiceLifetime.Singleton);
serviceCollection.TryAddSingleton<DbContextPool<TContextImplementation>>((Func<IServiceProvider, DbContextPool<TContextImplementation>>) (sp => new DbContextPool<TContextImplementation>((DbContextOptions) sp.GetService<DbContextOptions<TContextImplementation>>())));
//SEE THIS LINE HERE
serviceCollection.AddScoped<DbContextPool<TContextImplementation>.Lease>();
serviceCollection.AddScoped<TContextService>((Func<IServiceProvider, TContextService>) (sp => (TContextService) sp.GetService<DbContextPool<TContextImplementation>.Lease>().Context));
return serviceCollection;
}
Добавление AddDbContextPool на ConfigureServices должно быть достаточно
services.AddDbContextPool<YardCheckDBContext>(options => options.UseSqlServer(connection));
Кроме того, это помогает вам улучшить средний запрос в секунду, для получения дополнительной ссылки см. эту статью, где вы можете найти сравнение с DbContextPool или без. Надеюсь, это поможет
DbContext Pool