根据我的理解,.Net将汇集SqlConnection
个默认情况下连接字符串相同的对象。如果我调用Dispose方法,连接是否仍然会被合并?
在ASP.NET应用程序的上下文中询问此问题,该应用程序有时会在单个PageLoad
事件中对数据库进行多次点击。我希望将连接汇集在一起,但是希望确认在数据操作完成后关闭和处理连接不会干扰.NET对连接池的处理。
答案 0 :(得分:10)
使用连接池时,关闭SqlConnection
只会告诉连接池您已完成连接池。然后,池将决定是否实际关闭连接,或重新使用它。
来自MSDN docs:
如果SqlConnection超出范围,则不会关闭。因此,您必须通过调用Close或Dispose显式关闭连接。关闭和处置在功能上是等效的。如果连接池值Pooling设置为true或yes,则将基础连接返回到连接池。另一方面,如果Pooling设置为false或no,则关闭与服务器的基础连接。
答案 1 :(得分:3)
SQL Server Connection Pooling 上的MSDN文档说
关闭时,连接会被释放回池中 设置
和
我们强烈建议您始终关闭连接 完成使用它,以便连接将返回到 池。您可以使用的Close或Dispose方法执行此操作 连接对象......
此外,连接池将决定是否从池中删除连接
连接池在拥有后从池中删除连接 已经空闲了很长时间,或者如果小便者检测到了 已切断与服务器的连接
答案 2 :(得分:1)
据我了解,.Net将汇集SqlConnection对象
不,SQL提供程序将基础连接汇集到SQL Server(基于连接字符串的单独池)。
SqlConnection
对象将在调用Open
时获得池连接(或基于配置用于池的内容创建新连接,是否可用池连接),并将释放调用Close
或Dispose
时的连接。
这两个概念(SqlConnection
对象和与SQL Server的实际连接)是截然不同的,但显然有些相关。