我们使用MySql nuget包在.NET Core和Entity Framework Core中开发了一个项目。EF Core MySql连接不关闭
上下文被加到使用以下行扶养注射:
services.AddDbContext<ReadWriteContext>(options => options.UseMySQL(Configuration["Machine:ReadWriteConnectionString"]));
然后,在控制器,这个注入这样:
public class SystemController : Controller
{
private readonly ReadWriteContext _dataContext;
public SystemController(ReadWriteContext dataContext)
{
_dataContext = dataContext;
}
...
}
并用作例如:
var hasServices = await _dataContext.Services.AnyAsync();
在日志中我们看到了开始和结束日志行:
Opening connection to database 'config_service' on server '10.211.55.5'.
Closing connection to database 'config_service' on server '10.211.55.5'.
但是,当我们查看MySql服务器并运行“show full processlist”时,连接仍显示为处于睡眠状态并且从不关闭。当您停止.NET进程时,连接将关闭并从MySql进程列表中消失。
当请求完成时,我如何获得连接关闭。 AddDbContext应该被限制到当前的请求,但它似乎没有正确关闭连接。
任何帮助将是伟大的?
.Net通常使用一个连接池,它不会中断连接,它不会无故地保持活动状态。如果您需要强制连接,我认为您需要处理上下文。 – VMAtm