ConstraintCollection クラス

定義

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
[<System.Serializable>]
type ConstraintCollection = class
    inherit InternalDataCollectionBase
Public NotInheritable Class ConstraintCollection
Inherits InternalDataCollectionBase
Public Class ConstraintCollection
Inherits InternalDataCollectionBase
継承
ConstraintCollection
属性

最初の例では、 をDataTable作成し、 (プロパティを Unique に設定してtrue) を にDataColumnCollection追加DataColumnします。 2 番目の例では、 DataSet、2 つの DataTable オブジェクト、4 つの列、および を作成します DataRelation。 その後、制約の数が出力され、 と UniqueConstraint がオブジェクトの DataRelationCollectionDataSet追加されたときに DataRelation が作成されることを示しますForeignKeyConstraint

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 アクセスされます。

にはConstraintCollection、 の オブジェクトと ForeignKeyConstraint オブジェクトの両方UniqueConstraintDataTable含めることができます。 オブジェクトは UniqueConstraint 、データの整合性を維持するために、特定の列のデータが常に一意であることを確認します。 は ForeignKeyConstraint 、 のデータが更新または削除されたときに関連テーブルで発生する処理を DataTable 決定します。 たとえば、行が削除された場合、 ForeignKeyConstraint は関連する行も削除されるか (連鎖)、またはその他の一連のアクションが決定されます。

注意

に 2 つのテーブル間のリレーションシップを作成する をDataSet追加DataRelationすると、 と のUniqueConstraint両方ForeignKeyConstraintが自動的に作成されます。 UniqueConstraintは親 DataTableの主キー列に適用され、そのテーブルの ConstraintCollectionに制約が追加されます。 ForeignKeyConstraintは主キー列と外部キー列に適用され、制約は子テーブルの ConstraintCollectionに追加されます。

ではConstraintCollection、 などのAddClear標準のコレクション メソッドが使用されますRemove。 さらに、 メソッドを Contains 使用して、コレクション内の特定の制約の存在を検索できます。

UniqueConstraintは、 プロパティが にtrue設定された がDataColumnUniqueオブジェクトの DataColumnCollectionDataTable追加されるときに作成されます。

ForeignKeyConstraintは、 がオブジェクトの DataRelationCollectionDataSet追加されるときにDataRelation作成されます。

プロパティ

Count

コレクション内の要素の合計数を取得します。

(継承元 InternalDataCollectionBase)
IsReadOnly

InternalDataCollectionBase が読み取り専用かどうかを示す値を取得します。

(継承元 InternalDataCollectionBase)
IsSynchronized

InternalDataCollectionBase が同期されているかどうかを示す値を取得します。

(継承元 InternalDataCollectionBase)
Item[Int32]

指定したインデックス位置にある Constraint をコレクションから取得します。

Item[String]

指定した名前の Constraint をコレクションから取得します。

List

コレクションの項目をリストとして取得します。

List

コレクションの項目をリストとして取得します。

(継承元 InternalDataCollectionBase)
SyncRoot

コレクションの同期をとるために使用できるオブジェクトを取得します。

(継承元 InternalDataCollectionBase)

メソッド

Add(Constraint)

指定した Constraint オブジェクトをコレクションに追加します。

Add(String, DataColumn, Boolean)

指定した名前、UniqueConstraint、およびその列が主キーかどうかを示す値を使用して、新しい DataColumn を作成し、この制約をコレクションに追加します。

Add(String, DataColumn, DataColumn)

指定した名前、親列、および子列を使用して新しい ForeignKeyConstraint を作成し、この制約をコレクションに追加します。

Add(String, DataColumn[], Boolean)

指定した名前、UniqueConstraint オブジェクトの配列、およびその列が主キーかどうかを示す値を使用して新しい DataColumn を作成し、その制約をコレクションに追加します。

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

指定した親列と子列の配列を使用して新しい ForeignKeyConstraint を作成し、この制約をコレクションに追加します。

AddRange(Constraint[])

指定した ConstraintCollection 配列の要素をコレクションの末尾にコピーします。

CanRemove(Constraint)

Constraint を削除できるかどうかを示します。

Clear()

すべての Constraint オブジェクトのコレクションを削除します。

Contains(String)

名前で指定した Constraint オブジェクトがコレクション内に存在するかどうかを示します。

CopyTo(Array, Int32)

現在の InternalDataCollectionBase のすべての要素を 1 次元の Array にコピーします。コピー操作は、指定した InternalDataCollectionBase インデックスから始まります。

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

指定したインデックスをコピー開始位置として、1 次元の Array インスタンスにコレクション オブジェクトをコピーします。

Equals(Object)

指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。

(継承元 Object)
GetEnumerator()

コレクションの IEnumerator を取得します。

(継承元 InternalDataCollectionBase)
GetHashCode()

既定のハッシュ関数として機能します。

(継承元 Object)
GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
IndexOf(Constraint)

指定した Constraint のインデックスを取得します。

IndexOf(String)

名前で指定した Constraint のインデックスを取得します。

MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
OnCollectionChanged(CollectionChangeEventArgs)

CollectionChanged イベントを発生させます。

Remove(Constraint)

指定された Constraint をコレクションから削除します。

Remove(String)

名前で指定した Constraint をコレクションから削除します。

RemoveAt(Int32)

指定したインデックス位置にある Constraint オブジェクトをコレクションから削除します。

ToString()

現在のオブジェクトを表す文字列を返します。

(継承元 Object)

イベント

CollectionChanged

ConstraintCollection オブジェクトを追加または削除したことが原因で Constraint が変更されると、常に発生します。

拡張メソッド

Cast<TResult>(IEnumerable)

IEnumerable の要素を、指定した型にキャストします。

OfType<TResult>(IEnumerable)

指定された型に基づいて IEnumerable の要素をフィルター処理します。

AsParallel(IEnumerable)

クエリの並列化を有効にします。

AsQueryable(IEnumerable)

IEnumerableIQueryable に変換します。

適用対象

スレッド セーフ

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

こちらもご覧ください