Condividi tramite


ConstraintCollection Classe

Definizione

Rappresenta una raccolta di vincoli per un oggetto 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
Ereditarietà
ConstraintCollection
Attributi

Esempio

Il primo esempio crea un DataTableoggetto e aggiunge un oggetto DataColumn (con la relativa Unique proprietà impostata su true) all'oggetto DataColumnCollection. Il secondo esempio crea un DataSetoggetto , due DataTable oggetti, quattro colonne e un oggetto DataRelation. Il conteggio dei vincoli viene quindi stampato per indicare che un ForeignKeyConstraint oggetto e viene UniqueConstraint creato quando un DataRelation oggetto viene aggiunto all'oggetto DataSet .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

Commenti

L'oggetto ConstraintCollection è accessibile tramite la DataTable.Constraints proprietà .

ConstraintCollection può contenere sia UniqueConstraint oggetti che ForeignKeyConstraint per .DataTable Un UniqueConstraint oggetto garantisce che i dati in una colonna specifica siano sempre univoci per mantenere l'integrità dei dati. Determina ForeignKeyConstraint cosa si verificherà nelle tabelle correlate quando i dati nell'oggetto DataTable vengono aggiornati o eliminati. Ad esempio, se una riga viene eliminata, determina ForeignKeyConstraint se anche le righe correlate vengono eliminate (una catena) o un'altra azione.

Annotazioni

Quando si aggiunge un oggetto DataRelation che crea una relazione tra due tabelle a un DataSetoggetto , vengono creati automaticamente sia un ForeignKeyConstraint oggetto che un oggetto UniqueConstraint . L'oggetto UniqueConstraint viene applicato alla colonna chiave primaria nell'oggetto padre DataTablee il vincolo viene aggiunto a tale tabella ConstraintCollection. L'oggetto ForeignKeyConstraint viene applicato alla colonna chiave primaria e alla colonna chiave esterna e il vincolo viene aggiunto all'oggetto della ConstraintCollectiontabella figlio.

ConstraintCollection usa metodi di raccolta standard, ad Addesempio , Cleare Remove. Inoltre, il Contains metodo può essere usato per cercare l'esistenza di un vincolo specifico nella raccolta.

Un UniqueConstraint oggetto viene creato quando un DataColumn oggetto con la relativa Unique proprietà impostata su true viene aggiunto a .DataTableDataColumnCollection

Un ForeignKeyConstraint oggetto viene creato quando un DataRelation oggetto viene aggiunto a un DataSet oggetto DataRelationCollection.

Proprietà

Nome Descrizione
Count

Ottiene il numero totale di elementi in una raccolta.

(Ereditato da InternalDataCollectionBase)
IsReadOnly

Ottiene un valore che indica se l'oggetto InternalDataCollectionBase è di sola lettura.

(Ereditato da InternalDataCollectionBase)
IsSynchronized

Ottiene un valore che indica se l'oggetto InternalDataCollectionBase è sincronizzato.

(Ereditato da InternalDataCollectionBase)
Item[Int32]

Ottiene l'oggetto Constraint dalla raccolta in corrispondenza dell'indice specificato.

Item[String]

Ottiene l'oggetto Constraint dalla raccolta con il nome specificato.

List

Ottiene gli elementi della raccolta come elenco.

List

Ottiene gli elementi della raccolta come elenco.

(Ereditato da InternalDataCollectionBase)
SyncRoot

Ottiene un oggetto che può essere utilizzato per sincronizzare l'insieme.

(Ereditato da InternalDataCollectionBase)

Metodi

Nome Descrizione
Add(Constraint)

Aggiunge l'oggetto specificato Constraint all'insieme.

Add(String, DataColumn, Boolean)

Costruisce un nuovo UniqueConstraint oggetto con il nome specificato, DataColumn, e il valore che indica se la colonna è una chiave primaria e la aggiunge alla raccolta.

Add(String, DataColumn, DataColumn)

Costruisce un nuovo ForeignKeyConstraint oggetto con il nome, la colonna padre e la colonna figlio specificati e aggiunge il vincolo alla raccolta.

Add(String, DataColumn[], Boolean)

Costruisce un nuovo UniqueConstraint oggetto con il nome, la matrice di DataColumn oggetti e il valore specificati che indica se la colonna è una chiave primaria e la aggiunge all'insieme.

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

Costruisce un nuovo ForeignKeyConstraintoggetto , con le matrici specificate di colonne padre e colonne figlio e aggiunge il vincolo alla raccolta.

AddRange(Constraint[])

Copia gli elementi della matrice specificata ConstraintCollection alla fine dell'insieme.

CanRemove(Constraint)

Indica se un Constraint oggetto può essere rimosso.

Clear()

Cancella l'insieme di oggetti Constraint .

Contains(String)

Indica se l'oggetto Constraint specificato per nome esiste nell'insieme.

CopyTo(Array, Int32)

Copia tutti gli elementi dell'oggetto corrente InternalDataCollectionBase in un oggetto unidimensionale Array, a partire dall'indice specificato InternalDataCollectionBase .

(Ereditato da InternalDataCollectionBase)
CopyTo(Constraint[], Int32)

Copia gli oggetti raccolta in un'istanza unidimensionale Array a partire dall'indice specificato.

Equals(Object)

Determina se l'oggetto specificato è uguale all'oggetto corrente.

(Ereditato da Object)
GetEnumerator()

Ottiene un oggetto IEnumerator per la raccolta.

(Ereditato da InternalDataCollectionBase)
GetHashCode()

Funge da funzione hash predefinita.

(Ereditato da Object)
GetType()

Ottiene il Type dell'istanza corrente.

(Ereditato da Object)
IndexOf(Constraint)

Ottiene l'indice dell'oggetto specificato Constraint.

IndexOf(String)

Ottiene l'indice dell'oggetto specificato in base al Constraint nome.

MemberwiseClone()

Crea una copia superficiale del Objectcorrente.

(Ereditato da Object)
OnCollectionChanged(CollectionChangeEventArgs)

Genera l'evento CollectionChanged.

Remove(Constraint)

Rimuove l'oggetto specificato Constraint dalla raccolta.

Remove(String)

Rimuove l'oggetto Constraint specificato dal nome dall'insieme.

RemoveAt(Int32)

Rimuove l'oggetto Constraint in corrispondenza dell'indice specificato dall'insieme.

ToString()

Restituisce una stringa che rappresenta l'oggetto corrente.

(Ereditato da Object)

Eventi

Nome Descrizione
CollectionChanged

Si verifica ogni volta che l'oggetto viene modificato a causa dell'aggiunta ConstraintCollection o della rimozione di Constraint oggetti.

Metodi di estensione

Nome Descrizione
AsParallel(IEnumerable)

Abilita la parallelizzazione di una query.

AsQueryable(IEnumerable)

Converte un IEnumerable in un IQueryable.

Cast<TResult>(IEnumerable)

Esegue il cast degli elementi di un IEnumerable al tipo specificato.

OfType<TResult>(IEnumerable)

Filtra gli elementi di un IEnumerable in base a un tipo specificato.

Si applica a

Thread safety

Questo tipo è sicuro per le operazioni di lettura multithreading. È necessario sincronizzare tutte le operazioni di scrittura.

Vedi anche