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使うしかない。

https://msdn.microsoft.com/ja-jp/library/system.data.idbtransaction.rollback(v=vs.110).aspx