Поделиться через


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объект и добавляется (со свойством UniqueDataColumn , равным true) в DataColumnCollection. Во втором примере создается DataSetобъект , два DataTable объекта, четыре столбца и DataRelation. Затем выводится число ограничений, чтобы показать, что ForeignKeyConstraintUniqueConstraint и создаются при DataRelation добавлении 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

Комментарии

Доступ ConstraintCollection к объекту осуществляется через DataTable.Constraints свойство .

Может ConstraintCollection содержать объекты UniqueConstraint и ForeignKeyConstraint для DataTable. Объект UniqueConstraint гарантирует, что данные в определенном столбце всегда уникальны для сохранения целостности данных. Определяет ForeignKeyConstraint , что будет происходить в связанных таблицах при обновлении или удалении DataTable данных в . Например, если строка удалена, ForeignKeyConstraint будет определять, будут ли связанные строки также удалены (каскад) или какой-либо другой способ действий.

Примечание

При добавлении , создающего DataRelation связь между двумя таблицами к DataSet, ForeignKeyConstraint и UniqueConstraint , и создаются автоматически. UniqueConstraint Применяется к столбцу первичного ключа в родительском DataTableэлементе , а ограничение добавляется к этой таблице ConstraintCollection. ForeignKeyConstraint Применяется к столбцам первичного ключа и столбцу внешнего ключа, а ограничение добавляется к дочерней ConstraintCollectionтаблице .

Использует стандартные ConstraintCollection методы сбора, такие как Add, Clearи Remove. Кроме того, Contains метод можно использовать для поиска существования определенного ограничения в коллекции.

Создается UniqueConstraint при добавлении объекта со свойством DataColumnUnique , для свойства , заданного true значением DataTableDataColumnCollection.

Создается ForeignKeyConstraint при добавлении DataRelation к объекту DataSetDataRelationCollection.

Свойства

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 в одномерный массив Array, начиная с указанного индекса InternalDataCollectionBase.

(Унаследовано от InternalDataCollectionBase)
CopyTo(Constraint[], Int32)

Копирует объекты коллекции в одномерный экземпляр класса 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)

Преобразовывает коллекцию IEnumerable в объект IQueryable.

Применяется к

Потокобезопасность

Этот тип безопасен для многопоточных операций чтения. Необходимо синхронизировать все операции записи.

См. также раздел