Freigeben über


ConstraintCollection-Klasse

Stellt eine Auflistung von Einschränkungen für eine DataTable dar.

Namespace: System.Data
Assembly: System.Data (in system.data.dll)

Syntax

'Declaration
Public NotInheritable Class ConstraintCollection
    Inherits InternalDataCollectionBase
'Usage
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

Hinweise

Auf die ConstraintCollection wird über die DataTable.Constraints-Eigenschaft zugegriffen.

Die ConstraintCollection kann sowohl UniqueConstraint-Objekte als auch ForeignKeyConstraint-Objekte für die DataTable enthalten. Ein UniqueConstraint-Objekt stellt sicher, dass Daten in einer bestimmten Spalte stets eindeutig sind, um die Datenintegrität zu gewährleisten. Die ForeignKeyConstraint bestimmt die Aktionen, die in den verknüpften Tabellen ausgeführt werden, wenn Daten in der DataTable aktualisiert oder gelöscht werden. Wenn z. B. eine Zeile gelöscht wird, bestimmt die ForeignKeyConstraint, ob die verknüpften Zeilen ebenfalls gelöscht werden (CASCADE) oder ob eine andere Aktion ausgeführt wird.

Hinweis

Wenn Sie einem DataSet eine DataRelation hinzufügen, durch die eine Beziehung zwischen zwei Tabellen hergestellt wird, werden automatisch eine ForeignKeyConstraint und eine UniqueConstraint erstellt. Die UniqueConstraint wird auf die Primärschlüsselspalte in der übergeordneten DataTable angewendet, und die Einschränkung wird der ConstraintCollection dieser Tabelle hinzugefügt. Die ForeignKeyConstraint wird auf die Primärschlüsselspalte und die Fremdschlüsselspalte angewendet, und die Einschränkung wird der ConstraintCollection der untergeordneten Tabelle hinzugefügt.

Die ConstraintCollection verwendet Standardauflistungsmethoden, z. B. Add, Clear und Remove. Darüber hinaus kann mit der Contains-Methode überprüft werden, ob eine bestimmte Einschränkung in der Auflistung vorhanden ist.

Eine UniqueConstraint wird erstellt, wenn der DataColumnCollection eines DataTable-Objekts eine DataColumn hinzugefügt wird, deren Unique-Eigenschaft auf true festgelegt ist.

Eine ForeignKeyConstraint wird erstellt, wenn einer DataRelationCollection eines DataSet-Objekts eine DataRelation hinzugefügt wird.

Beispiel

Im ersten Beispiel wird eine DataTable erstellt, und der DataColumnCollection wird eine DataColumn hinzugefügt (deren Unique-Eigenschaft auf true festgelegt ist). Im zweiten Beispiel werden ein DataSet, zwei DataTable-Objekte, vier Spalten und eine DataRelation erstellt. Die Anzahl der Einschränkungen wird anschließend ausgegeben, um zu veranschaulichen, dass eine ForeignKeyConstraint und eine UniqueConstraint erstellt werden, wenn der DataRelationCollection des DataSet-Objekts eine DataRelation hinzugefügt wird.

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

Vererbungshierarchie

System.Object
   System.Data.InternalDataCollectionBase
    System.Data.ConstraintCollection

Threadsicherheit

Dieser Typ ist bei Multithread-Lesevorgängen sicher. Sie müssen alle Schreibvorgänge synchronisieren.

Plattformen

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile für Pocket PC, Windows Mobile für Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

.NET Framework unterstützt nicht alle Versionen sämtlicher Plattformen. Eine Liste der unterstützten Versionen finden Sie unter Systemanforderungen.

Versionsinformationen

.NET Framework

Unterstützt in: 2.0, 1.1, 1.0

.NET Compact Framework

Unterstützt in: 2.0, 1.0

Siehe auch

Referenz

ConstraintCollection-Member
System.Data-Namespace
ForeignKeyConstraint
UniqueConstraint
DataRelation