2016-04-03 135 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不是必需的,他們所做的事實可能是一種文體選擇。 –

相關問題