Share via


DataRelation クラス

2 つの DataTable オブジェクト間の親子のリレーションシップを表します。

この型のすべてのメンバの一覧については、DataRelation メンバ を参照してください。

System.Object
   System.Data.DataRelation

<Serializable>
Public Class DataRelation
[C#]
[Serializable]
public class DataRelation
[C++]
[Serializable]
public __gc class DataRelation
[JScript]
public
   Serializable
class DataRelation

スレッドセーフ

この型は、マルチスレッド読み取り操作に対して安全です。すべての書き込み操作の同期をとる必要があります。

解説

DataRelation は、 DataColumn オブジェクトを通じて 2 つの DataTable オブジェクトを相互に関連付けるために使用されます。たとえば、Customer/Orders のリレーションシップでは、Customers テーブルがこのリレーションシップの親であり、Orders テーブルが子です。これは、主キー/外部キーのリレーションシップに似ています。詳細については、「 テーブル間のリレーションシップの移動 」を参照してください。

リレーションシップは、親テーブル内と子テーブル内の一致する列の間に作成されます。つまり、両方の列の DataType 値が同じである必要があります。

リレーションシップによって、親 DataRow から子行へ連鎖変更を行うこともできます。子行の値の変更方法を制御するには、 ForeignKeyConstraintDataTable オブジェクトの ConstraintCollection に追加します。 ConstraintCollection は、親テーブル内の値が削除または更新されたときに実行されるアクションを決定します。

DataRelation が作成されると、最初に、このリレーションシップを設定できるかどうかを検証します。 DataRelationCollection に追加された後、リレーションシップは、無効にしてしまうような変更を一切できないようにすることで保持されます。 DataRelation が作成されてから、 DataRelationCollection に追加されるまでの間に、親行または子行に追加変更を行うことができます。変更の結果、リレーションシップが無効になった場合は例外が生成されます。

DataRelation オブジェクトは DataRelationCollection に格納されます。このオブジェクトにアクセスするには、 DataSetRelations プロパティ、および DataTableChildRelations プロパティと ParentRelations プロパティを使用します。

使用例

[Visual Basic, C#, C++] 新しい DataRelation を作成し、 DataSetDataRelationCollection に追加する例を次に示します。

 
Private Sub CreateRelation()
    ' Get the DataColumn objects from two DataTable objects in a DataSet.
    Dim parentCol As DataColumn
    Dim childCol As DataColumn
    ' Code to get the DataSet not shown here.
    parentCol = DataSet1.Tables("Customers").Columns("CustID")
    childCol = DataSet1.Tables("Orders").Columns("CustID")
    ' Create DataRelation.
    Dim relCustOrder As DataRelation
    relCustOrder = New DataRelation("CustomersOrders", parentCol, childCol)
    ' Add the relation to the DataSet.
    DataSet1.Relations.Add(relCustOrder)
 End Sub

[C#] 
private void CreateRelation() {
    // Get the DataColumn objects from two DataTable objects in a DataSet.
    DataColumn parentCol;
    DataColumn childCol;
    // Code to get the DataSet not shown here.
    parentCol = DataSet1.Tables["Customers"].Columns["CustID"];
    childCol = DataSet1.Tables["Orders"].Columns["CustID"];
    // Create DataRelation.
    DataRelation relCustOrder;
    relCustOrder = new DataRelation("CustomersOrders", parentCol, childCol);
    // Add the relation to the DataSet.
    DataSet1.Relations.Add(relCustOrder);
 }

[C++] 
private:
void CreateRelation() {
    // Get the DataColumn objects from two DataTable objects in a DataSet.
    DataColumn* parentCol;
    DataColumn* childCol;
    // Code to get the DataSet not shown here.
    parentCol = DataSet1->Tables->Item[S"Customers"]->Columns->Item[S"CustID"];
    childCol = DataSet1->Tables->Item[S"Orders"]->Columns->Item[S"CustID"];
    // Create DataRelation.
    DataRelation* relCustOrder;
    relCustOrder = new DataRelation(S"CustomersOrders", parentCol, childCol);
    // Add the relation to the DataSet.
    DataSet1->Relations->Add(relCustOrder);
 }

[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン 言語のフィルタ をクリックします。

必要条件

名前空間: System.Data

プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET

アセンブリ: System.Data (System.Data.dll 内)

参照

DataRelation メンバ | System.Data 名前空間 | ChildRelations | DataColumn | DataSet | ForeignKeyConstraint | DataRelationCollection | UniqueConstraint | ParentRelations