一人情シスのつぶやき

名古屋の中小企業で一人情シスをしている作者が、日々の業務で思うことをつぶやきます。

C#でのDbTransaction.Rollback

C#のTransactionにて、DbTransactionをusing句で使えば、Disposeの際にRollbackされるので、明示的なRollbackが不要とあったのだが、どうもそのように記載しているサイトのほうが少ないように見える。

MSDNで確認したところ、そうあるべきではるが、ベンダー依存のため前提とするのはだめらしい。

Dispose should rollback the transaction. However, the behavior of Dispose is provider specific, and should not replace calling Rollback.

https://msdn.microsoft.com/ja-jp/library/bf2cw321(v=vs.110).aspx

SqlTransactionだけならいいかもしれないが、OleDb(Access)やMySQLも共通化している今のコードでは駄目なようだ。try catch使うしかない。

IDbTransaction.Rollback メソッド (System.Data)