【发布时间】:2010-10-13 02:27:54
【问题描述】:
我在 using 语句中有一个 IDbTransaction,但我不确定如果在 using 语句中引发异常,它是否会回滚。我知道 using 语句将强制调用 Dispose()...但是有谁知道 Rollback() 是否也是如此?
更新:另外,我是否需要像下面那样显式调用 Commit() 还是使用 using 语句也能解决这个问题?
我的代码看起来像这样:
using Microsoft.Practices.EnterpriseLibrary.Data;
...
using(IDbConnection connection = DatabaseInstance.CreateConnection())
{
connection.Open();
using(IDbTransaction transaction = connection.BeginTransaction())
{
//Attempt to do stuff in the database
//potentially throw an exception
transaction.Commit();
}
}
【问题讨论】:
-
嗨,只是为了澄清“提交”案例。这当然是强制性的,因为 using(){} 只是调用 Dispose() 方法。如果 Commit 也是自动的,则 Transaction.Dispose 类无法知道它是否应该 Commit 或 Dispose :)
标签: c# transactions rollback using-statement