DataRelation の追加

複数の DataSet オブジェクトを含む DataTable では、DataRelation オブジェクトを使用して 1 つのテーブルを別のテーブルに関連付けたり、テーブル間を移動したり、関連付けたテーブルから子または親の行を戻したりできます。

DataRelation の作成に必要な引数は、作成する DataRelation の名前、およびそのリレーションシップで親子の列となる列への 1 つ以上の DataColumn 参照の配列です。 DataRelation を作成した後は、それを使用して、テーブル間の移動や値の取得を行うことができます。

DataSetDataRelation を追加すると、既定では、UniqueConstraint が親テーブルに、ForeignKeyConstraint が子テーブルに追加されます。 これらの既定の制約について詳しくは、「DataTable の制約」をご覧ください。

次のコード例では、DataSet の 2 つの DataTable オブジェクトを使用して、DataRelation を作成します。 各 DataTable にある CustID という名前の列は、2 つの DataTable オブジェクト間のリンクとして機能します。 例では、単一の DataRelationDataSetRelations コレクションに追加されます。 例の最初の引数では、作成する DataRelation の名前が指定されています。 2 番目の引数では親の DataColumn が設定され、3 番目の引数では子の DataColumn が設定されます。

customerOrders.Relations.Add("CustOrders", _  
  customerOrders.Tables("Customers").Columns("CustID"), _  
  customerOrders.Tables("Orders").Columns("CustID"))  
customerOrders.Relations.Add("CustOrders",  
  customerOrders.Tables["Customers"].Columns["CustID"],  
  customerOrders.Tables["Orders"].Columns["CustID"]);  

DataRelation には、Nested プロパティもあります。それを true に設定すると、WriteXml を使用して XML 要素として書き込んだときに、子テーブルの行が、親テーブルの関連付けられた行の中に入れ子になります。 詳しくは、「DataSet での XML の使用」を参照してください。

関連項目