usingステートメントにIDbTransactionがありますが、usingステートメントで例外がスローされた場合にロールバックされるかどうかはわかりません。私はusingステートメントがDispose()の呼び出しを強制することを知っています...しかし、Rollback()に対して同じものが当てはまるか知っていますか?エラーが発生した場合、usingステートメントはデータベーストランザクションをロールバックしますか?
更新:また、以下のように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()メソッドを呼び出すだけなので、必須ではありません。 Transaction.Disposeクラスは、コミットも自動的に行われた場合、コミットするかディスポージするかを知ることができませんでした。 –
も参照してください。http://stackoverflow.com/questions/6418992/is-it-a-better-practice-to-explicitly -call-transaction-roll-back-or-let-an-except- – nawfal