10

背景:
我有一个应用程序,我很好地将接口逻辑与处理数据库查询的中间层逻辑分开。我做了很多自定义排序和缩小,所以我没有使用很多 SqlDataSource,而是使用 SqlCommands 调用很多存储过程。

我正在使用表单身份验证来创建受保护的子目录。在受保护目录的 web.config 文件中,我有更多的连接字符串链接到具有更高特权角色的用户。

问题:
我应该在中间层共享一个 SqlConnection 对象以删除重复代码,还是应该为每个操作创建一个新实例?如果我需要更改连接字符串以访问受保护的存储过程,我可以重新实例化一个共享的 SqlConnection。这里有最佳实践吗?

4

3 回答 3

12

不要担心共享以节省资源。.NET 将为您管理这个,默认情况下它会进行连接池。编写清晰易懂的代码,让 .NET 处理这些细节。

于 2010-02-02T22:44:39.450 回答
10

通过 using 语句,尽可能短地创建尽可能多的 SqlConnections:

using (var connection = new SqlConnection(...)) {
  connection.Open();
  ...
}

Sql 连接取自连接池,它会自动为您管理争用。

请参阅:http: //msdn.microsoft.com/en-us/library/8xx3tyca (VS.80).aspx

于 2010-02-02T22:45:04.680 回答
2

创建一个新的(并正确处理)并利用连接池

于 2010-02-02T22:44:46.317 回答