複数の DataTable オブジェクトを含む DataSet では、DataRelation オブジェクトを使用して 1 つのテーブルを別のテーブルに関連付けたり、テーブル間を移動したり、関連付けたテーブルから子または親の行を戻したりできます。
DataRelation の作成に必要な引数は、作成する DataRelation の名前、およびそのリレーションシップで親子の列となる列への 1 つ以上の DataColumn 参照の配列です。DataRelation の作成後、DataRelation を使用してテーブル間の移動および値の取得を行うことができます。
DataSet への DataRelation の追加は、既定では UniqueConstraint が親テーブルに、ForeignKeyConstraint が子テーブルに追加されます。上記の既定の制約の詳細については、「テーブルへの制約の追加」を参照してください。
DataSet にある 2 つの DataTable オブジェクトを使用して、DataRelation を作成するコード例を次に示します。各 DataTable には、2 つの DataTable オブジェクト間のリンクとなる CustID という名前の列があります。例では、単一の DataRelation が DataSet の Relations コレクションに追加されます。例にある最初の引数には、作成する DataRelation の名前を指定します。2 番目の引数によって親の DataColumn が、3 番目の引数によって子の DataColumn が設定されます。
custDS.Relations.Add("CustOrders", _
custDS.Tables("Customers").Columns("CustID"), _
custDS.Tables("Orders").Columns("CustID"))
[C#]
custDS.Relations.Add("CustOrders",
custDS.Tables["Customers"].Columns["CustID"],
custDS.Tables["Orders"].Columns["CustID"]);
DataRelation には、入れ子になったプロパティもあります。true に設定すると、WriteXml を使用して XML 要素として書き込むときにそのプロパティによって、子テーブルの行が関連付けられた親テーブルの行に入れ子にされます。詳細については、「XML と DataSet」を参照してください。
参照
DataSet の作成および使用 | DataColumn クラス | DataRelation クラス | DataRelationCollection クラス | DataSet クラス | DataTable クラス