ConstraintCollection クラス

定義

DataTable に対する制約のコレクションを表します。Represents a collection of constraints for a DataTable.

public ref class ConstraintCollection sealed : System::Data::InternalDataCollectionBase
public ref class ConstraintCollection : System::Data::InternalDataCollectionBase
public sealed class ConstraintCollection : System.Data.InternalDataCollectionBase
[System.Serializable]
public class ConstraintCollection : System.Data.InternalDataCollectionBase
type ConstraintCollection = class
    inherit InternalDataCollectionBase
Public NotInheritable Class ConstraintCollection
Inherits InternalDataCollectionBase
Public Class ConstraintCollection
Inherits InternalDataCollectionBase
継承
ConstraintCollection
属性

最初の例では、DataTableを作成し、その Unique プロパティを trueに設定した DataColumnDataColumnCollectionに追加します。The first example creates a DataTable, and adds a DataColumn (with its Unique property set to true) to the DataColumnCollection. 2番目の例では、DataSet、2つの DataTable オブジェクト、4つの列、および DataRelationを作成します。The second example creates a DataSet, two DataTable objects, four columns, and a DataRelation. 次に、DataSet オブジェクトの DataRelationCollectionDataRelation を追加したときに、ForeignKeyConstraintUniqueConstraint が作成されることを示すために、制約の数が出力されます。The count of constraints is then printed to show that a ForeignKeyConstraint and a UniqueConstraint are created when a DataRelation is added to the DataSet object's DataRelationCollection.

   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());
           }
       }
   }
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

注釈

ConstraintCollection には DataTable.Constraints プロパティを使用してアクセスします。The ConstraintCollection is accessed through the DataTable.Constraints property.

ConstraintCollection には、DataTableUniqueConstraintForeignKeyConstraint の両方のオブジェクトを含めることができます。The ConstraintCollection can contain both UniqueConstraint and ForeignKeyConstraint objects for the DataTable. UniqueConstraint オブジェクトを使用すると、データの整合性を維持するために、特定の列のデータを常に一意にすることができます。A UniqueConstraint object makes sure that data in a specific column is always unique to preserve the data integrity. ForeignKeyConstraint は、DataTable 内のデータが更新または削除されたときに、関連テーブルで発生する処理を決定します。The ForeignKeyConstraint determines what will occur in related tables when data in the DataTable is either updated or deleted. たとえば、行が削除された場合、ForeignKeyConstraint によって、関連する行も削除されるか (連鎖)、またはその他のアクションが実行されるかが決まります。For example, if a row is deleted, the ForeignKeyConstraint will determine whether the related rows are also deleted (a cascade), or some other course of action.

注意

2つのテーブル間のリレーションシップを作成する DataRelationDataSetに追加すると、ForeignKeyConstraintUniqueConstraint の両方が自動的に作成されます。When you add a DataRelation that creates a relationship between two tables to a DataSet, both a ForeignKeyConstraint and a UniqueConstraint are created automatically. UniqueConstraint が親 DataTableの主キー列に適用され、そのテーブルの ConstraintCollectionに制約が追加されます。The UniqueConstraint is applied to the primary key column in the parent DataTable, and the constraint is added to that table's ConstraintCollection. ForeignKeyConstraint が主キー列と外部キー列に適用され、制約が子テーブルの ConstraintCollectionに追加されます。The ForeignKeyConstraint is applied to the primary key column and the foreign key column, and the constraint is added to the child table's ConstraintCollection.

ConstraintCollection は、AddClearRemoveなどの標準的な収集方法を使用します。The ConstraintCollection uses standard collection methods such as Add, Clear, and Remove. また、Contains メソッドを使用して、コレクション内に特定の制約が存在するかどうかを調べることもできます。In addition, the Contains method can be used to look for the existence of a particular constraint in the collection.

Unique プロパティが true に設定されている DataColumnDataTable オブジェクトの DataColumnCollectionに追加されると、UniqueConstraint が作成されます。A UniqueConstraint is created when a DataColumn with its Unique property set to true is added to a DataTable object's DataColumnCollection.

ForeignKeyConstraint は、DataRelationDataSet オブジェクトの DataRelationCollectionに追加されるときに作成されます。A ForeignKeyConstraint is created when a DataRelation is added to a DataSet object's DataRelationCollection.

プロパティ

Count

コレクション内の要素の合計数を取得します。Gets the total number of elements in a collection.

(継承元 InternalDataCollectionBase)
IsReadOnly

InternalDataCollectionBase が読み取り専用かどうかを示す値を取得します。Gets a value that indicates whether the InternalDataCollectionBase is read-only.

(継承元 InternalDataCollectionBase)
IsSynchronized

InternalDataCollectionBase が同期されているかどうかを示す値を取得します。Gets a value that indicates whether the InternalDataCollectionBase is synchronized.

(継承元 InternalDataCollectionBase)
Item[Int32]

指定したインデックス位置にある Constraint をコレクションから取得します。Gets the Constraint from the collection at the specified index.

Item[String]

指定した名前の Constraint をコレクションから取得します。Gets the Constraint from the collection with the specified name.

List

コレクションの項目をリストとして取得します。Gets the items of the collection as a list.

(継承元 InternalDataCollectionBase)
SyncRoot

コレクションの同期をとるために使用できるオブジェクトを取得します。Gets an object that can be used to synchronize the collection.

(継承元 InternalDataCollectionBase)

メソッド

Add(Constraint)

指定した Constraint オブジェクトをコレクションに追加します。Adds the specified Constraint object to the collection.

Add(String, DataColumn, Boolean)

指定した名前、UniqueConstraint、およびその列が主キーかどうかを示す値を使用して、新しい DataColumn を作成し、この制約をコレクションに追加します。Constructs a new UniqueConstraint with the specified name, DataColumn, and value that indicates whether the column is a primary key, and adds it to the collection.

Add(String, DataColumn, DataColumn)

指定した名前、親列、および子列を使用して新しい ForeignKeyConstraint を作成し、この制約をコレクションに追加します。Constructs a new ForeignKeyConstraint with the specified name, parent column, and child column, and adds the constraint to the collection.

Add(String, DataColumn[], Boolean)

指定した名前、UniqueConstraint オブジェクトの配列、およびその列が主キーかどうかを示す値を使用して新しい DataColumn を作成し、その制約をコレクションに追加します。Constructs a new UniqueConstraint with the specified name, array of DataColumn objects, and value that indicates whether the column is a primary key, and adds it to the collection.

Add(String, DataColumn[], DataColumn[])

指定した親列と子列の配列を使用して新しい ForeignKeyConstraint を作成し、この制約をコレクションに追加します。Constructs a new ForeignKeyConstraint, with the specified arrays of parent columns and child columns, and adds the constraint to the collection.

AddRange(Constraint[])

指定した ConstraintCollection 配列の要素をコレクションの末尾にコピーします。Copies the elements of the specified ConstraintCollection array to the end of the collection.

CanRemove(Constraint)

Constraint を削除できるかどうかを示します。Indicates whether a Constraint can be removed.

Clear()

すべての Constraint オブジェクトのコレクションを削除します。Clears the collection of any Constraint objects.

Contains(String)

名前で指定した Constraint オブジェクトがコレクション内に存在するかどうかを示します。Indicates whether the Constraint object specified by name exists in the collection.

CopyTo(Array, Int32)

現在の InternalDataCollectionBase のすべての要素を 1 次元の Array にコピーします。コピー操作は、指定した InternalDataCollectionBase インデックスから始まります。Copies all the elements of the current InternalDataCollectionBase to a one-dimensional Array, starting at the specified InternalDataCollectionBase index.

(継承元 InternalDataCollectionBase)
CopyTo(Constraint[], Int32)

指定したインデックスをコピー開始位置として、1 次元の Array インスタンスにコレクション オブジェクトをコピーします。Copies the collection objects to a one-dimensional Array instance starting at the specified index.

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判定します。Determines whether the specified object is equal to the current object.

(継承元 Object)
GetEnumerator()

コレクションの IEnumerator を取得します。Gets an IEnumerator for the collection.

(継承元 InternalDataCollectionBase)
GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(継承元 Object)
IndexOf(Constraint)

指定した Constraint のインデックスを取得します。Gets the index of the specified Constraint.

IndexOf(String)

名前で指定した Constraint のインデックスを取得します。Gets the index of the Constraint specified by name.

MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(継承元 Object)
Remove(Constraint)

指定した Constraint をコレクションから削除します。Removes the specified Constraint from the collection.

Remove(String)

名前で指定した Constraint をコレクションから削除します。Removes the Constraint object specified by name from the collection.

RemoveAt(Int32)

指定したインデックス位置にある Constraint オブジェクトをコレクションから削除します。Removes the Constraint object at the specified index from the collection.

ToString()

現在のオブジェクトを表す string を返します。Returns a string that represents the current object.

(継承元 Object)

イベント

CollectionChanged

ConstraintCollection オブジェクトを追加または削除したことが原因で Constraint が変更されると、常に発生します。Occurs whenever the ConstraintCollection is changed because of Constraint objects being added or removed.

拡張メソッド

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。Casts the elements of an IEnumerable to the specified type.

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。Filters the elements of an IEnumerable based on a specified type.

AsParallel(IEnumerable)

クエリの並列化を有効にします。Enables parallelization of a query.

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。Converts an IEnumerable to an IQueryable.

適用対象

スレッド セーフ

この型は、マルチスレッドの読み取り操作に対して安全です。This type is safe for multithreaded read operations. 書き込み操作はすべて同期する必要があります。You must synchronize any write operations.

こちらもご覧ください