Я использую PostgreSQL, и у меня есть ApplicationDbContext, например:
public class ApplicationDbContext : DbContext
{
private readonly DatabaseSettings _databaseOptions;
public ApplicationDbContext() { }
public ApplicationDbContext(IOptions<DatabaseSettings> databaseOptions)
{
_databaseOptions = databaseOptions.Value;
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasPostgresExtension("citext");
}
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
if (_databaseOptions == null)
{
optionsBuilder.UseInMemoryDatabase(Guid.NewGuid().ToString());
}
else
{
optionsBuilder.UseNpgsql(_databaseOptions.ConnectionString,
npgsqlOptionsAction: sqlOptions =>
{
sqlOptions.EnableRetryOnFailure(
maxRetryCount: _databaseOptions.MaxRetryCount,
maxRetryDelay: TimeSpan.FromSeconds(_databaseOptions.MaxRetryDelay),
errorCodesToAdd: null);
});
}
}
}
Этот контекст является основой для многих других. Я нахожусь на пути улучшения производительности и пытаюсь использовать объединение контекстов. Документы говорят, что для добавления опроса я должен:
services.AddDbContextPool<EmployeeContext>(options => options.UseNpgsql(connection));
Но я хочу хранить.UseNpgsql и другие конфиги DbContext в методе OnConfiguring. Как этого добиться?