2016-04-03 136 views
1

每个例子中,我使用ReliableSqlConnection发现类似如下:应该关闭来自ReliableSqlConnection的SQLConnection吗?

using (var cnn = new ReliableSqlConnection(connString)) 
{ 
    using (var cmd = cnn.CreateCommand()) 
    { 
     cnn.Open(); 
     ... 
    } 
} 

由于Open()返回SQLConnectionIDisposable,应该不是被布置?

如果我封装在使用语句中,它会产生任何区别或伤害吗?

using (var cnn = new ReliableSqlConnection(connString)) 
{ 
    using (var cmd = cnn.CreateCommand()) 
    { 
     using(cnn.Open(){ 
      ... 
     } 
    } 
} 

回答

0

你并不需要处置的弃用ReliableSQLConnection类创建在其构造函数的SqlConnection和其配置在其Dispose()

private void Dispose(bool disposing) 
{ 
    if (disposing) 
    { 
     if (this.underlyingConnection.State == ConnectionState.Open) 
     { 
      this.underlyingConnection.Close(); 
     } 

     this.underlyingConnection.Dispose(); 
    } 
} 
+0

如何/你在哪里找到的源代码那? 我确实在[projky.com](http://www.projky.com/entlib/6.0/Microsoft/Practices/EnterpriseLibrary/TransientFaultHandling/ReliableSqlConnection.cs.html)上找到它,但看起来并不是官方资源。 你知道为什么'ReliableSQLConnection :: Dispose()'调用'SQLConnection :: Close()'吗?我知道'SQLConnection :: Dispose()'调用'SQLConnection :: Close()' –

+0

它是在我的机器上作为EnterpriseLibrary.Source.WindowsAzure nuget包的一部分 –

+0

正如你所说,调用close不是必需的,他们所做的事实可能是一种文体选择。 –

相关问题