我应该使用多少个 SqlConnection 实例
Posted
技术标签:
【中文标题】我应该使用多少个 SqlConnection 实例【英文标题】:how many instances of SqlConnection should I use 【发布时间】:2010-02-02 22:42:19 【问题描述】:背景: 我有一个应用程序,我很好地将接口逻辑与处理数据库查询的中间层逻辑分开。我做了很多自定义排序和缩小,所以我没有使用很多 SqlDataSource,而是使用 SqlCommands 调用很多存储过程。
我正在使用表单身份验证来创建受保护的子目录。在受保护目录的 web.config 文件中,我有更多的连接字符串链接到具有更高特权角色的用户。
问题: 我应该在中间层共享一个 SqlConnection 对象以删除重复代码,还是应该为每个操作创建一个新实例?如果我需要更改连接字符串以访问受保护的存储过程,我可以重新实例化一个共享的 SqlConnection。这里有最佳做法吗?
【问题讨论】:
【参考方案1】:不必担心共享以节省资源。 .NET 将为您管理这个,默认情况下它会进行连接池。编写清晰易懂的代码,让 .NET 处理这些细节。
【讨论】:
【参考方案2】:通过 using 语句,尽可能短地创建尽可能多的 SqlConnections:
using (var connection = new SqlConnection(...))
connection.Open();
...
Sql 连接取自连接池,它会自动为您管理争用。
见:http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx
【讨论】:
+1 为答案。 “使用”语法绝对是要走的路(我认为它也可以用于文件/流访问)。 当然可以,对于任何一次性资源(实现 IDisposable 的类)【参考方案3】:创建一个新的(并妥善处理)并使用connection pooling。
【讨论】:
以上是关于我应该使用多少个 SqlConnection 实例的主要内容,如果未能解决你的问题,请参考以下文章