每当我的应用程序运行存储过程时,它都会执行以下操作:
using (DbBase conn = new DbBase())
{
//call sproc
}
DBBase()
打开与LINQ DataContext
的连接。
我想知道的是,如果有一种方法可以知道连接是否已经打开,并使用它而不是打开一个新连接。该验证应该在DbBase()
构造函数内部完成,如下所示:
ClientDB = new ClientDBDataContext([ConnectionString from web.config]);
谢谢
答案 0 :(得分:5)
您查看任何DBConnection
对象的State
属性,它会告诉您它是open, closed, connecting, executing, fetching or broken。
通过使用using{ }
语句,可以保证在对象超出范围时关闭连接。
答案 1 :(得分:2)
使用using
的好处是,这是您不必担心的事情类型。
答案 2 :(得分:1)
我不担心它(除非你对它有所描述)。使用连接池,打开新连接可能非常便宜。如果出现问题,您可能需要查看更改池中的连接数(http://www.15seconds.com/issue/040830.htm)
答案 3 :(得分:1)
我不知道DBase,但是Sql Server提供程序至少已经为你做了这个。它在后台使用连接池来尽可能重用现有连接。
答案 4 :(得分:1)
在连接池到位的情况下(默认情况下 - 你已经明确地做了一些事情来关闭它)这不是问题。让连接池代码处理这个。然后关闭连接,实际上只将其释放回池中以便重用。只有在池中没有,才会为您创建(并打开)新的。你使用using
声明好。这确保了连接将被释放回池中以便重复使用(未关闭),就像使用它完成此代码片段一样。