Questa documentazione è stata archiviata e non viene gestita.

Classe ConstraintCollection

Aggiornamento: novembre 2007

Rappresenta un insieme di vincoli per un oggetto DataTable.

Spazio dei nomi:  System.Data
Assembly:  System.Data (in System.Data.dll)

public sealed class ConstraintCollection : InternalDataCollectionBase
public final class ConstraintCollection extends InternalDataCollectionBase
public final class ConstraintCollection extends InternalDataCollectionBase

È possibile accedere alla classe ConstraintCollection mediante la proprietà DataTable.Constraints.

Nell'insieme ConstraintCollection possono essere presenti oggetti UniqueConstraint e ForeignKeyConstraint per l'oggetto DataTable. Un oggetto UniqueConstraint garantisce che i dati in una specifica colonna siano sempre univoci al fine di conservare l'integrità dei dati. L'oggetto ForeignKeyConstraint determina quali operazioni verranno eseguite nelle tabelle correlate durante l'aggiornamento o l'eliminazione di dati nell'oggetto DataTable. Se ad esempio viene eliminata una riga, ForeignKeyConstraint determinerà se verranno eliminate anche le righe correlate (a catena) o se verrà eseguita un'altra operazione.

1yt6wtd5.alert_note(it-it,VS.90).gifNota:

Quando si aggiunge una classe DataRelation che crea una relazione tra due tabelle a una classe DataSet, vengono create automaticamente una classe ForeignKeyConstraint e una classe UniqueConstraint. UniqueConstraint viene applicato alla colonna di chiave primaria dell'oggetto DataTable padre, mentre il vincolo viene aggiunto all'insieme ConstraintCollection di tale tabella. ForeignKeyConstraint viene applicato alla colonna di chiave primaria e alla colonna di chiave esterna, mentre il vincolo viene aggiunto all'insieme ConstraintCollection della tabella figlio.

L'insieme ConstraintCollection utilizza metodi standard di insiemi, quali Add, Clear e Remove. È inoltre possibile utilizzare il metodo Contains per verificare l'esistenza di un particolare vincolo nell'insieme.

Un vincolo UniqueConstraint viene creato quando viene aggiunto un oggetto DataColumn con la proprietà Unique impostata su true all'insieme DataColumnCollection di un oggetto DataTable.

Un vincolo ForeignKeyConstraint viene creato quando viene aggiunto un oggetto DataRelation all'insieme DataRelationCollection di un oggetto DataSet.

Nel primo esempio viene creato un oggetto DataTable e viene aggiunto un oggetto DataColumn (con la proprietà Unique impostata su true) all'insieme DataColumnCollection. Nel secondo esempio vengono creati un oggetto DataSet, due oggetti DataTable, quattro colonne e un oggetto DataRelation. Il numero di vincoli viene quindi stampato per dimostrare che vengono creati un vincolo ForeignKeyConstraint e un vincolo UniqueConstraint nel momento in cui viene aggiunto un oggetto DataRelation al costruttore DataRelationCollection dell'oggetto DataSet.

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


Questo tipo può essere utilizzato nelle operazioni di lettura con multithreading. È necessario sincronizzare tutte le operazioni di scrittura.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition , Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile per Smartphone, Windows Mobile per Pocket PC, Xbox 360

.NET Framework e .NET Compact Framework non supportano tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

.NET Framework

Supportato in: 3.5, 3.0, 2.0, 1.1, 1.0

.NET Compact Framework

Supportato in: 3.5, 2.0, 1.0

XNA Framework

Supportato in: 1.0
Mostra: