第8回 テーブルアダプタでトランザクション:連載:Visual Studio 2005によるWindowsデータベース・プログラミング(2/4 ページ)
更新処理の締めくくりとしてトランザクション処理を行う。.NETの自動トランザクションは強力だが……。最終回。
データベース確認の前の下準備
ここではまず、Visual Studioでアプリケーションをデバッグ実行するたびにデータベースが初期化されないように、設定を変更しておきます。これは、アプリケーションの終了後にも、データベースの内容を確認できるようにするためです。
第4回で解説したように、デフォルトではデータベース・ファイルの[出力ディレクトリにコピー]プロパティが「常にコピーする」となっています。これを「コピーしない」に変更します。
そしてプロジェクトのディレクトリ(プログラムのソース・コードなどがあるディレクトリ)から、データベース・ファイルであるNORTHWND.MDFを、出力ディレクトリであるbin\Debugディレクトリ(デバッグ実行時にEXEファイルが作成されるディレクトリ)にコピーしておきます。
以上の内容については、「.NET TIPS:Visual Studio 2005でデータベースの更新が反映されない場合には?」で説明していますので、詳しくはそちらを参照してください。
データベース不整合の確認
それでは、注文テーブルの更新に失敗したため、注文明細データは削除されたのに注文データが残ってしまっている、という状況を確認してみましょう。
とはいうものの、テーブルの更新だけをうまく失敗させるのは、実際にはなかなか大変なので、ここではその処理の直前でプログラムを停止させ、そこで実行を中断してプログラムを異常終了させることにします。このために、ブレイクポイントを次の画面のように設定します。
ではアプリケーションを実行しましょう。表示される画面は次のようになります*1。起動時には、Order IDが10248の注文データが表示されています。この注文データには、3つの注文明細データが含まれているのが分かります。
*1 ダウンロードしたNorthwindデータベースをそのまま使っている場合には、このような画面になるはずです。Northwindデータベースのダウンロードについては第4回で説明しています。
そして、もう一度、アプリケーションを実行してみましょう。
注文データは残っているのに、3件あった注文明細データだけが消えています。もくろみどおり、不整合な状態を作ることができました*2。
*2 今回のアプリケーションでは、このような状態は正常な場合にもあり得るため、厳密には不整合な状態とはいえないかもしれませんが。
Copyright© Digital Advantage Corp. All Rights Reserved.