マスタ/詳細関係のサポート
多層アプリケーションの作成:インデックス への移動
クライアント アプリケーションにおけるクライアント データセット間のマスタ/詳細関係は、テーブル タイプのデータセットを使ったセットアップと同じように作成することができます。 この方法でのマスタ/詳細関係のセットアップの詳細については、「マスタ/詳細関係の作成」を参照してください。
ただし、このアプローチには、以下のように、重大な欠点が 2 つあります。
- 詳細テーブルは、たとえ一度に 1 つの詳細セットしか使用しなくても、アプリケーション サーバーから自分のレコードをすべて取得して格納する必要があります (なお、この問題は、パラメータを使用することで軽減できます。 さらなる情報については、「パラメータでレコードを制限する」を参照してください。
- クライアント データセットの更新がデータセット レベルで適用されるのに対して、マスタ/詳細の更新は複数のデータセットにわたるので、更新の適用が非常に難しくなります。 2 層の環境では、データベース接続コンポーネントを使用して単一のトランザクションで複数のテーブルに更新を適用できますが、このような環境でさえ、マスタ/詳細フォームで更新を適用するのは大変です。
多層アプリケーションでは、ネストしたテーブルを使用してマスタ/詳細関係を表すことにより、これらの問題を回避できます。 データセットから提供する際にこれを行うには、アプリケーション サーバー上のデータセット間にマスタ/詳細関係をセットアップします。 そのあと、プロバイダ コンポーネントの DataSet プロパティをマスタ テーブルに設定します。 XML ドキュメントから提供する際に、ネストしたテーブルを使用してマスタ/詳細関係を表すには、ネストした詳細セットを定義している変換ファイルを使用します。
クライアントがプロバイダの GetRecords メソッドを呼び出すと、プロバイダは詳細データセットをデータ パケットのレコードに DataSet フィールドとして自動的に組み込みます。 クライアントがプロバイダの ApplyUpdates メソッドを呼び出すと、プロバイダは更新の適用を適切な順序で自動的に処理します。