.net连接池

Ere*_*rez 19 .net c# ado.net connection-pooling

我不明白常规连接和连接池之间的语法区别是什么.

当我使用using密钥时,例如:

using (SqlConnection connection = new SqlConnection(connectionString))
{
    connection.Open();
    command.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

这是执行连接池的方法吗?

Øyv*_*hen 35

您可以在此处阅读有关连接池的信息.

基本上只要连接字符串相同(包括大小写),就会从同一个连接池中获取连接.


jga*_*fin 19

您不使用连接控制连接池,而是使用连接字符串.大多数ADO提供程序默认使用池.

using语句用于调用Dispose对象的方法(在本例中为连接类).通过这样做,连接将返回池或根据连接字符串配置断开连接.

您还应该知道,如果正在使用分布式事务,则不会直接将连接返回到池中(TransactionScope在.Net 4中).事务完成/回滚后返回连接.

如果你不使用using,你应该确保你拨打Connection.Close()尽快.特别是如果您的应用程序处于某种形式的负载.


Fad*_*man 12

如上所述,使用SqlConnection将连接池的管理抽象出来.默认情况下,ADO.NET连接池打开,您可以进一步控制,例如关闭它或控制连接字符串中的池大小,例如

关掉

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Pooling=false;
Run Code Online (Sandbox Code Playgroud)

或控制最小和最大

Provider=SQLOLEDB;Data Source=localhost;Integrated Security=SSPI;Min Pool Size=5; Max Pool Size=20;
Run Code Online (Sandbox Code Playgroud)

更多详细说明和验证池的方法 http://www.codeproject.com/KB/dotnet/ADONET_ConnectionPooling.aspx