此问题通常发生在使用异步操作和Entity Framework 6.2访问数据库时。在进行异步操作时,Web API将会在操作完成之前一直保持数据库连接打开状态,在处理较长时间的异步操作时,这可能会导致Web API的性能受到影响。
为了解决此问题,可以使用以下方法:
using(var dbContext = new MyDbContext())
{
// 异步操作
}
public class MyDbContext : DbContext
{
public MyDbContext()
{
this.Configuration.AutoDetectChangesEnabled = true;
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
this.Database.CommandTimeout = 180;
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
// 数据库映射配置
}
// DbSet 数据集
}
其中,Configuration.AutoDetectChangesEnabled = true表示DbContext会在执行操作后自动关闭数据库连接。
使用这些方法之一,可以解决ASP.NET Web API + async + EF6.2中长时间延迟关闭数据库连接的问题。