Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/257.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
C# MySql ADO.NET:Close()保持连接打开_C#_Mysql_.net_Ado.net_Connection - Fatal编程技术网

C# MySql ADO.NET:Close()保持连接打开

C# MySql ADO.NET:Close()保持连接打开,c#,mysql,.net,ado.net,connection,C#,Mysql,.net,Ado.net,Connection,我正在本地进行一些测试,因为我在.NET上使用Entity Framework时遇到了一些严重的问题(很多块、并发问题等),所以我决定从底层开始分析Ado.NET连接 我正在调试我的代码,同时,我正在使用MySql Workbench检查打开的连接 我正在调试的代码是下一个代码: using (var con = new MySqlConnection(_connectionString)) { con.Open(); //thi

我正在本地进行一些测试,因为我在.NET上使用Entity Framework时遇到了一些严重的问题(很多块、并发问题等),所以我决定从底层开始分析Ado.NET连接

我正在调试我的代码,同时,我正在使用MySql Workbench检查打开的连接

我正在调试的代码是下一个代码:

using (var con = new MySqlConnection(_connectionString))
        {
            con.Open();

            //this extension method is because i am using the Dapper Library
            var products = con.Query<Product>("Select productId, name from products");

            con.Close();
        }
执行open()方法后,连接打开(命令:Sleep)

之后,在command:sleep中连接仍然打开。如何避免这种情况?因为它会保持连接打开,直到我杀死IIS实例。。。这对并发性不是很好。。。因为如果有很多用户在数据库中检索数据,如果他们没有对数据库执行任何操作,我不希望打开很多连接


如何改进这一点?

MySQL connector具有这种行为以获得更好的性能。这些连接正在休眠,以防您再次需要它们。为每个请求删除和创建新连接的成本非常高。@ArielScherman保持连接打开有助于重用连接,而无需为每个用户重新创建另一个连接。您的代码很好,因为它释放了NET MySqlConnection对象,但ADO.NET连接池使非托管连接资源保持打开状态,并准备好为其他用户提供服务,而无需使用其他非托管资源创建另一个对象。重要的是using语句(您还可以删除对Close的调用,因为end using大括号将关闭它)
con.Open();
var products = con.Query<Product>("Select productId, name from products");
con.Close();