Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
EF核心MySql连接未关闭_Mysql_Entity Framework_.net Core - Fatal编程技术网

EF核心MySql连接未关闭

EF核心MySql连接未关闭,mysql,entity-framework,.net-core,Mysql,Entity Framework,.net Core,我们已经使用MySql nuget包在.NET Core和Entity Framework Core中开发了一个项目 使用以下行将上下文添加到依赖性注入: services.AddDbContext<ReadWriteContext>(options => options.UseMySQL(Configuration["Machine:ReadWriteConnectionString"])); 并用作: public class SystemController : Con

我们已经使用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服务器并运行“ShowFullProcessList”时,连接仍然显示为处于睡眠状态,并且从未关闭。当您停止.NET进程时,连接将关闭并从MySql进程列表中消失

请求完成后,如何关闭连接。AddDbContext的作用域应为当前请求,但它似乎没有正确关闭连接


有什么帮助吗?

我不知道MySql有什么帮助。也就是说,如果您处于SQL server上下文中,您将面临“连接池”:

也就是说,您的应用程序保留一组活动连接,以加快到达数据服务器的过程。因此,即使你对游泳池说“我不再需要这个连接”,它也不相信你并保持连接打开。。。以防万一

在多长时间内,它取决于超出应用范围的逻辑。有一种说法是:这是连接池领域,让它来完成他的工作吧


因此,您的问题的答案是:您不能显式地关闭与服务器的连接。连接池将决定何时关闭或不关闭。

.Net通常使用一个连接池,它不会断开连接,只是没有理由它不会保持活动状态。如果需要强制连接,我认为需要处理上下文。