TransactionScopeのCompleteメソッドでコミットされない件について

解決


HogeHoge  2007-09-19 09:48:20  No: 143914

いつもお世話になっております。文章的に痛いタイトルで恐縮です。

遅まきながら.NETのSystem.Transactionsを『10 行でズバリ !! TransactionScopeの利用 (VB)』を参考にして勉強しております。

(URLはhttp://www.microsoft.com/japan/msdn/thisweek/300x10/phase3/Transaction_Scope/vb.aspx

DBはページ中にあるとおりSQL ServerのAdventureWorksサンプルを使用して
います。

ソースは以下の通りです。

Imports WindowsApplication1.AdventureWorksDataSetTableAdapters  ' 型付TableAdapter
Imports System.Transactions                                     ' System.Transactions

Public Class FormTxsSample

    ' Button1押下時の処理
    ' テーブルの内容をデータセットに読み込む
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim adapter As New ProductCategoryTableAdapter
        adapter.Fill(AdventureWorksDataSet1.ProductCategory)

    End Sub

    ' Button2 押下時の処理
    ' データセットの内容に基づいてテーブルを更新
    Private Sub Button2_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button2.Click

        Try
            ' TransactionScopeを生成し、トランザクションの範囲を指定
            Using tx As New TransactionScope
                ' 以下はトランザクションの範囲内:
                ' トランザクショナルなリソースに対する処理は、
                ' 暗黙的にトランザクションとして処理される
                Dim adapter As New ProductCategoryTableAdapter
                adapter.Update(AdventureWorksDataSet1.ProductCategory)
                ' Completeメソッドの呼び出しまでがトランザクションの範囲
                ' トランザクションをコミットする
                tx.Complete()
            End Using
            ' トランザクション処理成功時のメッセージを表示
            MessageBox.Show("更新に成功しました。", "Success", _
                MessageBoxButtons.OK, MessageBoxIcon.Information)
            ' トランザクションがアボートされたときの処理
        Catch ex As Exception
            ' トランザクション処理失敗時のメッセージを表示
            MessageBox.Show("更新に失敗しました。" & vbCrLf & ex.ToString(), "Failed", _
                MessageBoxButtons.OK, MessageBoxIcon.Error)
        End Try


    End Sub

End Class


読み込みボタンでデータを読み込み、データを編集、更新ボタンクリックで
更新(コミット)・・・、ここまでは問題ないのですが、再読み込みを行う
と編集前の状態で表示されます。(先に編集した内容が反映されてません。)

ページにある各設定は施しているのですが...。

皆目見当がつかず、識者のご教示を仰ぐ次第です。
よろしくお願い致します。


HogeHoge  2007-09-19 13:14:54  No: 143915

自己レスです。。。

データ ソース構成ウィザードでデータ接続等を設定した後に、データベー
スのコピーをローカルにコピーするかどうか尋ねてくる箇所があります。
こちらで質問に及んだ際は、ここを「ローカルにコピー」という具合にして
いました。

こちらで質問させて頂いてから、プロジェクトを再作成し、先の箇所をロー
カルにコピーではなく、既存のデータベース ファイルに接続するようにし
たところ、問題なく更新されるようになりました。

これでとりあえず、当初の問題はクリアしましたが、どういうことなのか
原理が解せずにおります。


※作成する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。







   このエントリーをはてなブックマークに追加