Share via


ADO.NET DataSet

DataSet オブジェクトは、ADO.NET による非接続型分散データ シナリオをサポートするための中心的な役割を果たします。DataSet はメモリ内に常駐するデータ表現であり、データ ソースとは関係なく、一貫性のあるリレーショナル プログラミング モデルを提供します。複数の異なるデータ ソースと併用したり、XML データと併用したり、またはアプリケーションにとってローカルなデータを管理するために使用できます。DataSet は関連テーブル、制約、およびテーブル間のリレーションシップを含む、完全なデータ セットを表現します。次の図に示すのが DataSet オブジェクト モデルです。

DataSet オブジェクト モデル

1 つの DataSet に含まれるメソッドとオブジェクトは、リレーショナル データベース モデルに含まれるメソッドやオブジェクトと整合性があります。

DataSet は、XML で作成した内容や XSD (XML Schema definition language) スキーマで定義したスキーマの永続化および再読み込みもできます。

DataTableCollection

ADO.NET DataSet には、DataTable オブジェクトによって表現される 0 個以上のテーブルのコレクションが含まれます。DataTableCollection は、1 つの DataSet に属するすべての DataTable オブジェクトを含んでいます。

DataTable は名前空間 System.Data 内で定義され、メモリ常駐データを含む単一テーブルを表現します。これは DataColumnCollection によって表現される列と、ConstraintCollection によって表現される制約のコレクションを含みます。これらによってテーブルのスキーマが定義されます。DataTable には、DataRowCollection によって表現される、テーブル内のデータを含む行のコレクションも含まれます。DataRow には、現在の状態に加えて、現在のバージョンと元のバージョンを両方とも保持して、行に格納された値に対する変更を識別します。

DataRelationCollection

DataSetDataRelationCollection オブジェクトにはリレーションシップが含まれます。DataRelation オブジェクトで表現されるリレーションシップは、ある DataTable の行に、別の DataTable の行を関連付けます。これは、リレーショナル データベースの、主キー列と外部キー列をつなぐ結合パスに似ています。DataRelation は、1 つの DataSet が含む 2 つのテーブルの間で、一致する列を識別します。

リレーションシップを使用すると、DataSet 内部の、あるテーブルと別のテーブルを行き来できます。DataRelation で必須とされる要素は、リレーションシップの名前、関連付けるテーブルの名前、および各テーブル内で関連付けられる列です。DataColumn オブジェクトの配列をキー列として指定することによって、テーブルごとに複数の列を使用してリレーションシップを構築できます。DataRelationCollection にリレーションシップを追加する場合には、関連列の値が変更されたときに整合性制約を適用するために、オプションとして UniqueKeyConstraint および ForeignKeyConstraint が追加されることがあります。

ExtendedProperties

(DataTable および DataColumn だけではなく) DataSet には ExtendedProperties プロパティがあります。ExtendedPropertiesPropertyCollection です。ここに、結果セットの生成に使用した SELECT ステートメントやデータ生成時の日付/時刻スタンプなどのカスタマイズ情報を配置できます。ExtendedProperties コレクションは、DataTable および DataColumn と同様に、DataSet に関するスキーマ情報と共に永続化されます。

参照

ADO.NET の概要 | ADO.NET のアーキテクチャ | DataColumn クラス | DataColumnCollection クラス | DataRelation クラス | DataRelationCollection クラス | DataRowCollection クラス | DataSet クラス | DataTable クラス | DataTableCollection クラス | PropertyCollection クラス