2011-09-03 50 views
3

我會嘗試儘可能簡單地描述它。我們有SqlConnection和3種方法。爲頁面重用SqlConnection的正確方法

1型

這種類型的開放一個的SqlConnection和方法有屬性的SqlConnection。基本上,他們只是用sConnection和方法的創建,使用,關閉的SqlCommand和SqlDataReader的內

using (SqlConnection sConnection = new SqlConnection(string)) 
{ 
    sConnection.Open(); 

    Method objMethod = new Method(); 
    objMethod.SqlConnection = sConnection; 
    objMethod.DoSomething(); 

    Method2 objMethod = new Method2(); 
    objMethod2.SqlConnection = sConnection; 
    objMethod2.DoSomething(); 

    Method3 objMethod = new Method3(); 
    objMethod3.SqlConnection = sConnection; 
    objMethod3.DoSomething(); 
} 

第二類型

這種類型將每個方法中單獨創建新的SqlConnection,SqlCommand的,SqlDataReader的。對於3種方法,它必須打開和關閉3個SqlConnections。

Method objMethod = new Method(); 
    objMethod.DoSomething(); 

    Method2 objMethod = new Method2(); 
    objMethod2.DoSomething(); 

    Method3 objMethod = new Method3(); 
    objMethod3.DoSomething(); 

問題是,是否保留的SqlConnection方法中封裝還是安全上創建的SqlConnection並使用該打開,而不需要打開新的方法中的連接。

謝謝

回答

2

Sql Connections彙集所以如果你關心的是性能;很可能兩種方法都只使用一種連接,因此使用第二種方法的懲罰可以忽略不計。

另一方面,第二種方法表現出更好的封裝和關注點分離。我會選擇第二個選項。

1

SqlConnections被合併。使用Sql Server,最好打開,使用和關閉(使用塊 - 最後使用Dispose調用關閉)。

事實上,保持連接打開並保持連接實際上可能會損害性能,因爲您正在擊敗池化行爲並導致其他線程/請求在不需要時無需向池中添加另一個連接。

讓池做它的工作。