【发布时间】:2019-09-13 02:36:40
【问题描述】:
我正在使用 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));
但我想在 OnConfiguring 方法中存储.UseNpgsql 和 DbContext 的其他配置。如何实现?
【问题讨论】:
-
您正在运行什么样的应用程序?它是一个 ASP.NET 应用程序吗?
-
是的。 asp.net webapi
标签: c# entity-framework entity-framework-core ef-core-2.2