我应该在数据访问层中保留sqlconnection吗?

tom*_*ich 8 .net sql ado.net

似乎快速打开和关闭sqlconnections涉及很多开销.我应该坚持连接(一个,每个客户端,每个数据库),或者在我需要时继续声明一个新的sqlconnection对象,并确保我自己清理?

你做了什么?什么运作良好,效果不佳?

Cor*_*rch 22

在大多数情况下,.NET连接池会为您处理此问题.即使您通过代码打开和关闭连接,这也不是幕后发生的事情.实例化并打开连接时,.NET会在连接池中查找具有相同连接字符串的现有连接,并为您提供相应的连接.关闭连接时,它将返回到连接池以供将来使用.

如果您使用的是SQL Server:http://msdn.microsoft.com/en-us/library/8xx3tyca.aspx

OLE DB,ODBC,Oracle:http://msdn.microsoft.com/en-us/library/ms254502.aspx

Dino Esposito文章:http://www.wintellect.com/Articles/ADO%20NET%20Connection.pdf

您可以使用connectionstring name/values覆盖默认池行为:http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx.请参阅包含"连接生命周期"的第二个设置表.


Mar*_*sen 5

由于默认设置,池存储在连接池中,因此开销不大.因此,当您打开连接时,通常您只需从池中获得就绪连接.创建SqlConnections并没有给我带来任何麻烦.