【发布时间】:2017-06-14 07:33:10
【问题描述】:
我们使用 MySql nuget 包在 .NET Core 和 Entity Framework Core 中开发了一个项目。
使用以下行将上下文添加到依赖注入:
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 服务器并运行“显示完整进程列表”时,连接仍然显示为处于睡眠状态并且永远不会关闭。当您停止 .NET 进程时,连接会关闭并从 MySql 进程列表中消失。
如何在请求完成后关闭连接。 AddDbContext 的范围应为当前请求,但它似乎无法正确关闭连接。
任何帮助都会很棒?
【问题讨论】:
-
.Net 通常使用连接池,它不会中断连接,它根本不会无缘无故地保持活动状态。如果你需要强制连接,你需要处理上下文,我认为。
标签: mysql entity-framework .net-core