いつもお世話になっております。文章的に痛いタイトルで恐縮です。
遅まきながら.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
読み込みボタンでデータを読み込み、データを編集、更新ボタンクリックで
更新(コミット)・・・、ここまでは問題ないのですが、再読み込みを行う
と編集前の状態で表示されます。(先に編集した内容が反映されてません。)
ページにある各設定は施しているのですが...。
皆目見当がつかず、識者のご教示を仰ぐ次第です。
よろしくお願い致します。
自己レスです。。。
データ ソース構成ウィザードでデータ接続等を設定した後に、データベー
スのコピーをローカルにコピーするかどうか尋ねてくる箇所があります。
こちらで質問に及んだ際は、ここを「ローカルにコピー」という具合にして
いました。
こちらで質問させて頂いてから、プロジェクトを再作成し、先の箇所をロー
カルにコピーではなく、既存のデータベース ファイルに接続するようにし
たところ、問題なく更新されるようになりました。
これでとりあえず、当初の問題はクリアしましたが、どういうことなのか
原理が解せずにおります。
| ツイート |
|