・トランザクション処理
FAdoConnection.Connect() FAdoConnection.Lock() Try FAdoConnection.beginTransaction() Try Dim daMember As New MemberDao(FAdoConnection) daMember.updateDao(dtData) Dim daStaff As New StaffDao(FAdoConnection) daStaff.updateDao(dtData) FAdoConnection.Commit() Catch ex As Exception FAdoConnection.Rollback() Throw ex End Try Finally FAdoConnection.UnLock() FAdoConnection.Disconnect() End Try
Lockカウントが1以上ならDisconnectをしても切断されないので、呼び出される側での対応は特に不要。
ただ、呼び出される側でトランザクションを開始する場合はそれなりに判定が必要なのがまだまだだな。
勝手にcommitとかrollbackすると呼び出し側が死ぬ‥‥
基本的にモデルから呼び出されるモデルは単体テーブルの更新処理をしてるだけなので、そこで独自にトランザクションを始めることは今のところ無いから、対応はまたヒマが出来たらかな。
本当はseaser.NET使ってアスペクト指向で組むのが楽なんですが、別のプロジェクトで試しに使ってみて貰っている段階だし、システム自体が単純なのでフレームワークで書き換えるのも今更なので、またヒマがあったらってことで、ええ。