読者です 読者をやめる 読者になる 読者になる

トランザクション処理

    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使ってアスペクト指向で組むのが楽なんですが、別のプロジェクトで試しに使ってみて貰っている段階だし、システム自体が単純なのでフレームワークで書き換えるのも今更なので、またヒマがあったらってことで、ええ。