Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.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# 检查是否存在';s与数据库asp.net/c的开放连接#_C#_Asp.net_Database_Linq - Fatal编程技术网

C# 检查是否存在';s与数据库asp.net/c的开放连接#

C# 检查是否存在';s与数据库asp.net/c的开放连接#,c#,asp.net,database,linq,C#,Asp.net,Database,Linq,每次我的应用程序运行存储过程时,它都会执行以下操作: using (DbBase conn = new DbBase()) { //call sproc } ClientDB = new ClientDBDataContext([ConnectionString from web.config]); DBBase()打开与LINQDataContext的连接 我想知道的是,如果有一种方法可以知道一个连接是否已经打开,并使用它来代替打开一个新连接。该验证应在如下所示的DbB

每次我的应用程序运行存储过程时,它都会执行以下操作:

using (DbBase conn = new DbBase())
{      
    //call sproc
}
ClientDB = new ClientDBDataContext([ConnectionString from web.config]);
DBBase()
打开与LINQ
DataContext的连接

我想知道的是,如果有一种方法可以知道一个连接是否已经打开,并使用它来代替打开一个新连接。该验证应在如下所示的
DbBase()
构造函数中完成:

using (DbBase conn = new DbBase())
{      
    //call sproc
}
ClientDB = new ClientDBDataContext([ConnectionString from web.config]);
谢谢你

我不会担心的(除非你对它进行了分析或其他什么)。使用连接池,打开一个新连接可能非常便宜。如果出现问题,那么您可能需要查看更改池中的连接数()

您可以查看任何
DBConnection
对象的属性,它会告诉您它是否正确


但是,通过使用
using{}
语句,可以保证当对象超出范围时,连接会被关闭。

使用
的好处是,这是一种您不需要担心的事情

我不知道DBase,但Sql Server提供程序至少已经为您完成了这项工作。它在后台使用连接池在可能的情况下重用现有连接。

有了连接池(默认设置-除非您已明确关闭连接池),这不是问题。让连接池代码来处理这个问题。然后关闭连接,实际上只会将其释放回要重用的池。只有当池中没有池时,才会为您创建(并打开)一个新池。很好,您正在使用
using
语句。这将确保连接将被释放回池中以供重用(而不是关闭),因为此代码段已完成。

感谢您的快速回答。我同意连接池的说法,但我想知道是否有办法,因为我认为这不足以解决OPs缺乏这方面知识的问题。仅仅说“别担心,开心点,
使用
将解决所有问题…”并不能回答这个问题,也不能填补OPs对ADO.Net连接池的理解中的空白,这是这个问题的核心。@cb:Womp的答案是最好的,我投了更高的票来表明这一点。如果我看到了,我就不会发布我快速而肮脏的答案。我已经更改了正确的答案,别担心。据我所知,我实际上知道池,你们的答案是足够的,但我必须同意,womp的更完整。谢谢你。@Nick,删除了我的DV,由于你的热情回应@Eduardo,仍然认为池行为(不使用statement)是你问题实质背后的关键问题(至少是你问的方式),但这肯定是有争议的…DbBase是我创建的一个类,它管理我们在项目中拥有的数据上下文。谢谢,我希望答案提到,使用()实际上并不会关闭连接,而只是在ADO.Net连接池中将其释放回以重新使用…@Charles-close方法是在DbConnection对象的Dispose()期间专门调用的。Net将维护池信息,但就客户端而言,连接是关闭的,这是一件好事。