3

我有一个名为 Databaseprovider 的类,并且我有一个名为 CurrentTransaction 的静态 OracleTransaction 属性。这是我为它分配价值的方式:

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

我刚刚注意到,在提交或回滚之后,我的事务的连接属性设置为空。现在我想知道我之前创建的 OracleConnection 对象会发生什么?它是否也被关闭和处置,或者它成为一个免费的、无法访问的对象?

4

2 回答 2

4

连接保持打开状态,直到代码具有.Close().

代替上面的代码,用using块编写代码。

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

需要时初始化昂贵的对象,使用后将其丢弃。

于 2012-09-10T08:21:57.157 回答
2

使用 try catch finally 块并在 finally 块中显式关闭连接以释放连接。

于 2012-09-10T09:39:56.900 回答