语言

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
属性

示例

第一个示例创建一个,并将一个(其属性设置为)添加到 < a0/> 中。 第二个示例创建一个、两DataSet个DataTable对象、四列和一个DataRelation。 然后打印约束计数,以显示在对象添加到对象时创建 a ForeignKeyConstraint 和 a UniqueConstraintDataRelation。DataSetDataRelationCollection

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对象的 trueA 时DataTable,将创建 ADataColumnCollection。

将 A ForeignKeyConstraintDataRelation 添加到 DataSet 对象 DataRelationCollection时创建。

属性

名称 说明
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)

指示是否可以删除 a 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 添加或删除对象而更改时发生。

扩展方法

名称 说明
AsParallel(IEnumerable)

启用查询的并行化。

AsQueryable(IEnumerable)

将 IEnumerable 转换为 IQueryable。

Cast<TResult>(IEnumerable)

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

OfType<TResult>(IEnumerable)

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

适用于

线程安全性

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

另请参阅