Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该使用多少个SqlConnection实例_C#_Asp.net_Sql_Sql Server_Sqlconnection - Fatal编程技术网

C# 我应该使用多少个SqlConnection实例

C# 我应该使用多少个SqlConnection实例,c#,asp.net,sql,sql-server,sqlconnection,C#,Asp.net,Sql,Sql Server,Sqlconnection,背景: 我有一个应用程序,我很好地将接口逻辑与处理数据库查询的中间层逻辑分离开来。我做了很多自定义排序和缩小范围的工作,所以我没有使用很多SQLDataSource,而是使用SqlCommands调用了很多存储过程 我正在使用表单身份验证创建受保护的子目录。在受保护目录中的web.config文件中,我有更多连接字符串链接到具有更高权限角色的用户 问题: 我是应该在中间层共享一个SqlConnection对象以减少重复代码,还是应该为每个操作创建一个新实例?如果需要更改连接字符串以访问受保护的存

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

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

问题:

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

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

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

通过using语句尽可能短地创建所需的SqlConnections:

using (var connection = new SqlConnection(...)) {
  connection.Open();
  ...
}
Sql连接来自连接池,连接池将自动为您管理争用


请参阅:

+1以获取答案。“using”语法无疑是一个不错的选择(我认为它也可以用于文件/流访问)