在.NET应用程序中,是否将所有数据库连接都使用一个共享的SqlConnection对象是一个好的实践,还是每次访问数据库时都应该有一个单独的对象?我目前使用的是共享的SqlConnection对象,但突然遇到了问题。当我需要使用SQL身份验证模式而不是Windows身份验证模式时,似乎不能使用共享的对象。我第一次尝试使用SQL身份验证,当我尝试第二次使用同一连接时,它给了我这个错误消息:“此命令关联了一个必须首先关闭的已打开的DataReader。”请帮忙解决。
对于单个线程而言,使用单个SqlConnection对象可能会表现更好,但它会对你的数据库服务器这一宝贵资源提出要求,因为它会保持连接,从而比必要时间更长地占用db服务器资源。
最好尽可能短暂地实例化SqlConnection。连接池可以减轻大部分设置连接的开销,并确保最有效地利用数据库资源。