代码之家  ›  专栏  ›  技术社区  ›  Justin C

我应该使用多少个sqlconnection实例

  •  10
  • Justin C  · 技术社区  · 15 年前

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

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

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

    3 回复  |  直到 15 年前
        1
  •  12
  •   Hogan    15 年前

    不用担心共享来节省资源。.NET将为您管理此项,默认情况下它会执行连接池。编写代码时要清晰易懂,并让.net处理这些细节。

        2
  •  10
  •   Jordão    15 年前

    通过using语句,创建尽可能多的sqlconnections,并尽可能短的使用时间:

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

    SQL连接是从连接池中获取的,它将自动为您管理争用。

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

        3
  •  2
  •   mtmk    15 年前

    创建一个新的(并妥善处理)并利用 connection pooling .