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,并将属性Unique设置为 true) 的 DataColumn (添加到 DataColumnCollection。 第二个示例创建一个 、两DataTableDataSet对象、四个列和一个 DataRelation。 然后输出约束计数,以显示在将 DataSet 添加到对象的 DataRelationCollectionDataRelation创建了 和 UniqueConstraintForeignKeyConstraint

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包含 的 DataTableForeignKeyConstraint 对象。 UniqueConstraint对象确保特定列中的数据始终是唯一的,以保持数据完整性。 确定 ForeignKeyConstraint 更新或删除 中的数据 DataTable 时,相关表中将发生的情况。 例如,如果删除了某一行, ForeignKeyConstraint 将确定是 (级联) 删除相关行,还是删除其他操作过程。

注意

将创建两个表之间的关系的 添加到 DataRelationDataSet时, ForeignKeyConstraint 将自动创建 和 UniqueConstraint 。 应用于 UniqueConstraintDataTable中的主键列,并将约束添加到该表的 ConstraintCollectionForeignKeyConstraint应用于主键列和外键列,并将约束添加到子表的 ConstraintCollection

ConstraintCollection使用标准集合方法,例如 AddClearRemove。 此外, Contains 方法可用于查找集合中是否存在特定约束。

UniqueConstraint将 属性设置为 trueDataColumnUnique 添加到 对象的 DataColumnCollection时,DataTable会创建 。

ForeignKeyConstraint将 添加到 对象的 DataRelationCollectionDataRelation,会DataSet创建 。

属性

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)

使用指定名称、DataColumn 和指示列是否为主键的值构造一个新 UniqueConstraint,并将其添加到集合中。

Add(String, DataColumn, DataColumn)

使用指定名称、父列和子列来构造新 ForeignKeyConstraint,并将此约束添加到集合。

Add(String, DataColumn[], Boolean)

使用指定名称、DataColumn 对象的数组和指示列是否为主键的值构造一个新 UniqueConstraint,并将其添加到集合中。

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

每当由于添加或移除 Constraint 对象而更改 ConstraintCollection 时发生。

扩展方法

Cast<TResult>(IEnumerable)

IEnumerable 的元素强制转换为指定的类型。

OfType<TResult>(IEnumerable)

根据指定类型筛选 IEnumerable 的元素。

AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

IEnumerable 转换为 IQueryable

适用于

线程安全性

此类型对于多线程读取操作是安全的。 必须同步所有写入操作。

另请参阅