다음을 통해 공유


ConstraintCollection 클래스

DataTable에 대한 제약 조건 컬렉션을 나타냅니다.

네임스페이스: System.Data
어셈블리: System.Data(system.data.dll)

구문

‘선언
Public NotInheritable Class ConstraintCollection
    Inherits InternalDataCollectionBase
‘사용 방법
Dim instance As ConstraintCollection
public sealed class ConstraintCollection : InternalDataCollectionBase
public ref class ConstraintCollection sealed : public InternalDataCollectionBase
public final class ConstraintCollection extends InternalDataCollectionBase
public final class ConstraintCollection extends InternalDataCollectionBase

설명

ConstraintCollectionDataTable.Constraints 속성을 통해 액세스됩니다.

ConstraintCollectionDataTable에 대해 UniqueConstraint 개체와 ForeignKeyConstraint 개체를 모두 포함할 수 있습니다. UniqueConstraint 개체는 특정 열에 있는 데이터가 항상 고유하여 데이터 무결성을 유지하도록 합니다. ForeignKeyConstraint 개체는 DataTable의 데이터가 업데이트되거나 삭제될 때 관련 테이블에서 수행될 작업을 결정합니다. 예를 들어, 행 하나가 삭제되면 ForeignKeyConstraint 개체는 관련 행들도 함께 삭제(cascade)할지 아니면 다른 작업을 수행할지 여부를 결정합니다.

참고

두 테이블 사이의 관계를 만드는 DataRelationDataSet에 추가하면 ForeignKeyConstraintUniqueConstraint가 모두 자동으로 만들어집니다. UniqueConstraint는 부모 DataTable의 기본 키 열에 적용되며 해당 테이블의 ConstraintCollection에 추가됩니다. ForeignKeyConstraint는 기본 키 열과 외래 키 열에 적용되며 자식 테이블의 ConstraintCollection에 추가됩니다.

ConstraintCollectionAdd, Clear, Remove 등과 같은 표준 컬렉션 메서드를 사용합니다. 또한 Contains 메서드를 사용하여 컬렉션에 특정 제약 조건이 있는지 확인할 수 있습니다.

UniqueConstraintUnique 속성이 true로 설정된 DataColumnDataTable 개체의 DataColumnCollection에 추가할 때 만들어집니다.

ForeignKeyConstraintDataRelationDataSet 개체의 DataRelationCollection에 추가할 때 만들어집니다.

예제

첫째 예제에서는 DataTable을 만들고, Unique 속성이 true로 설정된 DataColumnDataColumnCollection에 추가합니다. 둘째 예제에서는 DataSet, 두 개의 DataTable 개체, 네 개의 열 및 DataRelation을 만듭니다. 그런 다음 제약 조건의 개수를 출력하여 DataRelationDataSet 개체의 DataRelationCollection에 추가할 때 ForeignKeyConstraintUniqueConstraint가 만들어지는지 확인합니다.

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.Object
   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에서 모든 플래폼의 모든 버전을 지원하지는 않습니다. 지원되는 버전의 목록은 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

2.0, 1.1, 1.0에서 지원

.NET Compact Framework

2.0, 1.0에서 지원

참고 항목

참조

ConstraintCollection 멤버
System.Data 네임스페이스
ForeignKeyConstraint
UniqueConstraint
DataRelation