2012-09-10 30 views
3

我有一個名爲Databaseprovider的類,在那裏我有一個名爲CurrentTransaction的靜態OracleTransaction屬性。下面是如何將值分配給它:transaction.Commit或Rollback後連接對象會發生什麼

 OracleConnection connection = ConnectionProvider.CreateConnection(conString); 
     connection.Open(); 
     DatabaseProvider.CurrentTransaction = connection.BeginTransaction(IsolationLevel.ReadCommitted); 

我只注意到後提交或回滾我交易的連接屬性被設置爲null。現在我想知道我之前創建的OracleConnection對象會發生什麼?它是否被關閉並被處理掉,或者它變成了一個免費的,無法訪問的對象?

回答

4

連接保持打開狀態,直到代碼有.Close()

代替上述代碼,用using塊編寫代碼。

using (OracleConnection connection = ConnectionProvider.CreateConnection(conString)) 
{ 
    .... 
} 

在需要時初始化昂貴的物體,在使用後丟棄它。

2

使用try catch finally塊並在finally塊中顯式關閉連接以釋放連接。