背景:
我有一个应用程序,我很好地将我的接口逻辑与我的中间层逻辑分开,后者处理对数据库的查询。我做了很多自定义排序和缩小,所以我没有使用很多SqlDataSources,而是用SqlCommands调用了很多存储过程。
我正在使用表单身份验证来创建受保护的子目录。在受保护目录中的web.config文件中,我有更多连接字符串链接到具有更高特权角色的用户。
问题:
我应该在中间层共享一个SqlConnection对象来删除重复代码,还是应该为每个操作创建一个新实例?如果我需要更改连接字符串以访问受保护的存储过程,我可以重新实例化共享SqlConnection。这里有最好的做法吗?
答案 0 :(得分:12)
不要担心共享以节省资源。 .NET将为您管理,默认情况下它会进行连接池。编写清晰易懂的代码,让.NET处理这些细节。
答案 1 :(得分:10)
尽可能多地通过using语句创建尽可能多的SqlConnections:
using (var connection = new SqlConnection(...)) {
connection.Open();
...
}
从连接池中获取SQL连接,这将自动管理您的争用。
请参阅:http://msdn.microsoft.com/en-us/library/8xx3tyca(VS.80).aspx
答案 2 :(得分:2)
创建一个新的(并妥善处理)并使用connection pooling。