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 クラスのページへのリンク