TableAdapterManager の概要
TableAdapterManager は、データを関連するデータ テーブルに保存する機能を提供するコンポーネントです。 TableAdapterManager では、データ テーブルを関連付ける外部キー リレーションシップを使用することにより、データベースでの外部キー制約 (参照整合性) に違反せずに、データセットからデータベースに挿入コマンド、更新コマンド、削除コマンドを送信する正しい順序が決定されます。
外部キー制約とは、関連レコードの挿入、更新、および削除を制御するデータベース内の一貫性規則のことです。 別のテーブルの子レコードが存在している間、その元となる親レコードが削除されないようにするのが外部キー制約です。
TableAdapterManager を使用して関連するデータ テーブルのデータを保存するプロセス全体は、階層更新と呼ばれます。
関連するデータ テーブルの変更されたデータを保存することは、1 つのテーブルのデータの保存より若干複雑です。 これは、関連する各テーブルの挿入コマンド、更新コマンド、削除コマンドを、データベースで定義された外部キー制約に違反しないように、特定の順序で実行する必要があるためです。 たとえば、新しい顧客と注文、および既存の顧客と注文の両方を管理できる注文入力アプリケーションがあるとします。 既存の顧客のレコードを削除する必要がある場合、まずその顧客の注文をすべて削除しておく必要があります。 また、新しい顧客のレコードを注文と共に追加する場合は、テーブルに適用される外部キー制約があるため、新しい顧客のレコードを挿入してから、その顧客の注文を挿入する必要があります。 これらの例が示すように、データの特定のサブセットを抽出し、正しい順序で更新 (挿入、更新、削除) を送信することにより、参照整合性を維持し、データベースの外部キー制約と競合しないようにする必要があります。
TableAdapterManager の作成
既定では、TableAdapterManager クラスは、プロジェクトで型指定されたデータセットを作成すると生成されます。 具体的には、これは、TableAdapterManager を作成するかどうかを決定する、データセットの Hierarchical Update プロパティの値です。 Hierarchical Update が True に設定されている場合、TableAdapterManager が作成されます。Hierarchical Update が False に設定されている場合、TableAdapterManager が含まれないデータセットが作成されます。 詳細については、「方法 : 階層更新を有効または無効にする」を参照してください。
注意
既定では、以前のバージョンの Visual Studio で作成されたプロジェクトに追加されたデータセットでは、Hierarchical Update プロパティが False に設定されています。これは、階層更新が無効になっており、TableAdapterManager が作成されないことを意味しています。既存のデータセットに TableAdapterManager を追加する方法の詳細については、「方法 : 既存の Visual Studio プロジェクトで階層更新を実装する」を参照してください。
TableAdapterManager のリファレンス
TableAdapterManager クラスは、.NET Framework の一部ではありません。 そのため、ドキュメントで調べることはできません。 これは、デザイン時にデータセット作成プロセスの一部として作成されます。
TableAdapterManager クラスのよく使用するメソッドとプロパティを次に示します。
メンバー |
Description |
---|---|
UpdateAll メソッド |
すべてのデータ テーブルのすべてのデータを保存します。 |
BackUpDataSetBeforeUpdate プロパティ |
ブール値。 TableAdapterManager.UpdateAll メソッドを実行する前に、データセットのバックアップ コピーを作成するかどうかを決定します。 |
tableNameTableAdapter プロパティ |
TableAdapter を表します。 生成される TableAdapterManager には、管理する各 TableAdapter のプロパティが含まれます。 たとえば、Customers テーブルと Orders テーブルが存在するデータセットは、CustomersTableAdapter プロパティと OrdersTableAdapter プロパティを含む TableAdapterManager によって生成されます。 |
UpdateOrder プロパティ |
個々の挿入コマンド、更新コマンド、削除コマンドの実行順序を制御します。 TableAdapterManager.UpdateOrderOption 列挙型の値のいずれかに設定します。 既定では、UpdateOrder は InsertUpdateDelete に設定されます。 これは、データセットのすべてのテーブルに対して挿入が実行され、次にデータセットのすべてのテーブルに対して更新が実行され、最後にデータセットのすべてのテーブルに対して削除が実行されることを意味しています。 詳細については、「方法 : 階層更新の実行順序を設定する」を参照してください。 |
参照
処理手順
チュートリアル : 関連するデータ テーブルからのデータの保存 (階層更新)