データセット内の変更データをデータベースに保存するとき (階層更新が有効な場合)、データを保存するために TableAdapterManager で使用される挿入、更新、削除の送信順序を制御できます。 既定では、階層更新は、挿入、更新、削除の順で実行されます。 TableAdapterManager には、更新、挿入、削除の順に実行できる UpdateOrder プロパティも用意されています。
既定では、TableAdapterManager は、まずデータセット内のすべてのテーブルに対して挿入を行い、次にデータセット内のすべてのテーブルに対して更新を行い、そして、最後にデータセット内のすべてのテーブルに対して削除を行うということを理解しておくことが重要です。
既存レコードの主キー値を変更する場合には、最初に更新を実行するように階層更新順序を変更すると便利です。 最初に更新を実行することにより、既存レコードが期待どおりに変更されます。 最初に挿入を実行すると、新しい主キーがデータベース上にまだ作成されていないため、新しいレコードが作成されます。
手順
階層更新の実行順序を設定するには
デザイン ビューで、更新を実行する TableAdapterManager を含むフォームを開きます。
コンポーネント トレイ内の TableAdapterManager をクリックします。
[プロパティ] ウィンドウで UpdateOrder プロパティを、アプリケーション要件に合った順序に設定します。
階層更新の実行順序をプログラムによって設定するには
次のコードは、全更新、全挿入、全削除の順で実行するように TableAdapterManager を設定します。yourDataSetTableAdapters は、実際のプロジェクトで使用されている名前に置き換えます。
Me.TableAdapterManager.UpdateOrder = _ yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.UpdateInsertDelete
this.tableAdapterManager.UpdateOrder = yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.UpdateInsertDelete;
次のコードは、全挿入、全更新、全削除の順で実行するように TableAdapterManager を設定します。 これが既定の TableAdapterManager の動作です。
Me.TableAdapterManager.UpdateOrder = _ yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete
this.tableAdapterManager.UpdateOrder = yourDataSetTableAdapters.TableAdapterManager.UpdateOrderOption.InsertUpdateDelete;
参照
処理手順
チュートリアル : 関連するデータ テーブルからのデータの保存 (階層更新)