ConstraintCollection イベント
ConstraintCollection クラス
アセンブリ: System.Data (system.data.dll 内)


ConstraintCollection にアクセスするには、DataTable.Constraints プロパティを使用します。
ConstraintCollection は、DataTable に対する UniqueConstraint オブジェクトと ForeignKeyConstraint オブジェクトの両方を含むことができます。UniqueConstraint オブジェクトは、特定の列のデータが常に一意であり、データの整合性が保持されるようにします。ForeignKeyConstraint は、DataTable 内のデータが更新または削除された場合に関連テーブル内のそのデータをどのように処理するかを決定します。たとえば、行を削除したとき、関連行も削除する (連鎖) か、その他のアクションを実行するかを ForeignKeyConstraint が決定します。
![]() |
---|
2 つのテーブル間のリレーションシップを作成する DataRelation を DataSet に追加すると、ForeignKeyConstraint と UniqueConstraint の両方が自動的に作成されます。UniqueConstraint が親 DataTable 内の主キー列に適用され、この制約が親テーブルの ConstraintCollection に追加されます。ForeignKeyConstraint が主キー列と外部キー列に適用され、この制約が子テーブルの ConstraintCollection に追加されます。 |
ConstraintCollection は、Add、Clear、Remove など、標準のコレクションのメソッドを使用します。この他、Contains メソッドを使用して、特定の制約がコレクションに含まれるかどうかを確認できます。
Unique プロパティが true に設定されている DataColumn を DataTable オブジェクトの DataColumnCollection に追加すると、UniqueConstraint が作成されます。
DataRelation を DataSet オブジェクトの DataRelationCollection に追加すると、ForeignKeyConstraint が作成されます。

DataTable を作成し、DataColumn (Unique プロパティが true に設定されている) を DataColumnCollection に追加する方法を最初の例に示します。DataSet を 1 つ、DataTable オブジェクトを 2 つ、列を 4 つ、DataRelation を 1 つ作成する方法を 2 番目の例に示します。DataRelation を DataSet オブジェクトの DataRelationCollection に追加したときに ForeignKeyConstraint と UniqueConstraint が作成されたことを示す制約数が出力されます。
Private Sub MakeTableWithUniqueConstraint() Dim table As New DataTable("table") Dim column As New DataColumn("UniqueColumn") column.Unique = True table.Columns.Add(column) ' Print count, name, and type. Console.WriteLine("Constraints.Count " _ + table.Constraints.Count.ToString()) Console.WriteLine(table.Constraints(0).ConstraintName) Console.WriteLine( _ table.Constraints(0).GetType().ToString()) ' Add a second unique column. column = New DataColumn("UniqueColumn2") column.Unique = True table.Columns.Add(column) ' Print info again. Console.WriteLine("Constraints.Count " _ + table.Constraints.Count.ToString()) Console.WriteLine(table.Constraints(1).ConstraintName) Console.WriteLine( _ table.Constraints(1).GetType().ToString()) End Sub Private Sub MakeTableWithForeignConstraint() ' Create a DataSet. Dim dataSet As New DataSet("dataSet") ' Make two tables. Dim customersTable As New DataTable("Customers") Dim ordersTable As New DataTable("Orders") ' Create four columns, two for each table. Dim name As New DataColumn("Name") Dim id As New DataColumn("ID") Dim orderId As New DataColumn("OrderID") Dim orderDate As New DataColumn("OrderDate") ' Add columns to tables. customersTable.Columns.Add(name) customersTable.Columns.Add(id) ordersTable.Columns.Add(orderId) ordersTable.Columns.Add(orderDate) ' Add tables to the DataSet. dataSet.Tables.Add(customersTable) dataSet.Tables.Add(ordersTable) ' Create a DataRelation for two of the columns. Dim myRelation As New DataRelation _ ("CustomersOrders", id, orderId, True) dataSet.Relations.Add(myRelation) ' Print TableName, Constraints.Count, ' ConstraintName and Type. Dim t As DataTable For Each t In dataSet.Tables Console.WriteLine(t.TableName) Console.WriteLine("Constraints.Count " _ + t.Constraints.Count.ToString()) Console.WriteLine("ParentRelations.Count " _ + t.ParentRelations.Count.ToString()) Console.WriteLine("ChildRelations.Count " _ + t.ChildRelations.Count.ToString()) Dim cstrnt As Constraint For Each cstrnt In t.Constraints Console.WriteLine(cstrnt.ConstraintName) Console.WriteLine(cstrnt.GetType()) Next cstrnt Next t End Sub
private void MakeTableWithUniqueConstraint() { DataTable table = new DataTable("table"); DataColumn column = new DataColumn("UniqueColumn"); column.Unique=true; table.Columns.Add(column); // Print count, name, and type. Console.WriteLine("Constraints.Count " + table.Constraints.Count); Console.WriteLine(table.Constraints[0].ConstraintName); Console.WriteLine(table.Constraints[0].GetType() ); // Add a second unique column. column = new DataColumn("UniqueColumn2"); column.Unique=true; table.Columns.Add(column); // Print info again. Console.WriteLine("Constraints.Count " + table.Constraints.Count); Console.WriteLine(table.Constraints[1].ConstraintName); Console.WriteLine(table.Constraints[1].GetType() ); } private void MakeTableWithForeignConstraint() { // Create a DataSet. DataSet dataSet = new DataSet("dataSet"); // Make two tables. DataTable customersTable= new DataTable("Customers"); DataTable ordersTable = new DataTable("Orders"); // Create four columns, two for each table. DataColumn name = new DataColumn("Name"); DataColumn id = new DataColumn("ID"); DataColumn orderId = new DataColumn("OrderID"); DataColumn cDate = new DataColumn("OrderDate"); // Add columns to tables. customersTable.Columns.Add(name); customersTable.Columns.Add(id); ordersTable.Columns.Add(orderId); ordersTable.Columns.Add(cDate); // Add tables to the DataSet. dataSet.Tables.Add(customersTable); dataSet.Tables.Add(ordersTable); // Create a DataRelation for two of the columns. DataRelation myRelation = new DataRelation("CustomersOrders",id,orderId,true); dataSet.Relations.Add(myRelation); // Print TableName, Constraints.Count, // ConstraintName and Type. foreach(DataTable t in dataSet.Tables) { Console.WriteLine(t.TableName); Console.WriteLine("Constraints.Count " + t.Constraints.Count); Console.WriteLine("ParentRelations.Count " + t.ParentRelations.Count); Console.WriteLine("ChildRelations.Count " + t.ChildRelations.Count); foreach(Constraint cstrnt in t.Constraints) { Console.WriteLine(cstrnt.ConstraintName); Console.WriteLine(cstrnt.GetType()); } } }

System.Data.InternalDataCollectionBase
System.Data.ConstraintCollection


Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


ConstraintCollection プロパティ

名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の要素の合計数を取得します。 ( InternalDataCollectionBase から継承されます。) |
![]() | IsReadOnly | InternalDataCollectionBase が読み取り専用かどうかを示す値を取得します。 ( InternalDataCollectionBase から継承されます。) |
![]() | IsSynchronized | InternalDataCollectionBase の同期がとられているかどうかを示す値を取得します。 ( InternalDataCollectionBase から継承されます。) |
![]() | Item | オーバーロードされます。 指定した Constraint をコレクションから取得します。 |
![]() | SyncRoot | コレクションの同期をとるために使用できるオブジェクトを取得します。 ( InternalDataCollectionBase から継承されます。) |


ConstraintCollection メソッド

名前 | 説明 | |
---|---|---|
![]() | Add | オーバーロードされます。 Constraint オブジェクトをコレクションに追加します。 |
![]() | AddRange | 指定した ConstraintCollection 配列の要素をコレクションの末尾にコピーします。 |
![]() | CanRemove | Constraint を削除できるかどうかを示します。 |
![]() | Clear | すべての Constraint オブジェクトのコレクションを削除します。 |
![]() | Contains | 名前で指定した Constraint オブジェクトがコレクション内に存在するかどうかを示します。 |
![]() | CopyTo | オーバーロードされます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetEnumerator | コレクションの IEnumerator を取得します。 ( InternalDataCollectionBase から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | IndexOf | オーバーロードされます。 指定した Constraint のインデックスを取得します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | Remove | オーバーロードされます。 ConstraintCollection から Constraint を削除します。 |
![]() | RemoveAt | 指定したインデックス位置にある Constraint オブジェクトをコレクションから削除します。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |
![]() | OnCollectionChanged |

ConstraintCollection メンバ
ConstraintCollection データ型で公開されるメンバを以下の表に示します。

名前 | 説明 | |
---|---|---|
![]() | Count | コレクション内の要素の合計数を取得します。(InternalDataCollectionBase から継承されます。) |
![]() | IsReadOnly | InternalDataCollectionBase が読み取り専用かどうかを示す値を取得します。(InternalDataCollectionBase から継承されます。) |
![]() | IsSynchronized | InternalDataCollectionBase の同期がとられているかどうかを示す値を取得します。(InternalDataCollectionBase から継承されます。) |
![]() | Item | オーバーロードされます。 指定した Constraint をコレクションから取得します。 |
![]() | SyncRoot | コレクションの同期をとるために使用できるオブジェクトを取得します。(InternalDataCollectionBase から継承されます。) |


名前 | 説明 | |
---|---|---|
![]() | Add | オーバーロードされます。 Constraint オブジェクトをコレクションに追加します。 |
![]() | AddRange | 指定した ConstraintCollection 配列の要素をコレクションの末尾にコピーします。 |
![]() | CanRemove | Constraint を削除できるかどうかを示します。 |
![]() | Clear | すべての Constraint オブジェクトのコレクションを削除します。 |
![]() | Contains | 名前で指定した Constraint オブジェクトがコレクション内に存在するかどうかを示します。 |
![]() | CopyTo | オーバーロードされます。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetEnumerator | コレクションの IEnumerator を取得します。 (InternalDataCollectionBase から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | IndexOf | オーバーロードされます。 指定した Constraint のインデックスを取得します。 |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | Remove | オーバーロードされます。 ConstraintCollection から Constraint を削除します。 |
![]() | RemoveAt | 指定したインデックス位置にある Constraint オブジェクトをコレクションから削除します。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |
![]() | OnCollectionChanged |


- ConstraintCollectionのページへのリンク