ConstraintCollection 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 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
- 继承
- 属性
示例
第一个示例创建 一个 DataTable,并将属性Unique设置为 true
) 的 DataColumn (添加到 DataColumnCollection。 第二个示例创建一个 、两DataTable个 DataSet对象、四个列和一个 DataRelation。 然后输出约束计数,以显示在将 DataSet 添加到对象的 DataRelationCollection时DataRelation创建了 和 UniqueConstraint 。ForeignKeyConstraint
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包含 的 DataTable和 ForeignKeyConstraint 对象。 UniqueConstraint对象确保特定列中的数据始终是唯一的,以保持数据完整性。 确定 ForeignKeyConstraint 更新或删除 中的数据 DataTable 时,相关表中将发生的情况。 例如,如果删除了某一行, ForeignKeyConstraint 将确定是 (级联) 删除相关行,还是删除其他操作过程。
注意
将创建两个表之间的关系的 添加到 DataRelationDataSet时, ForeignKeyConstraint 将自动创建 和 UniqueConstraint 。 应用于 UniqueConstraint 父 DataTable中的主键列,并将约束添加到该表的 ConstraintCollection。 ForeignKeyConstraint应用于主键列和外键列,并将约束添加到子表的 ConstraintCollection。
ConstraintCollection使用标准集合方法,例如 Add、 Clear和 Remove。 此外, Contains 方法可用于查找集合中是否存在特定约束。
UniqueConstraint将 属性设置为 true
的 DataColumnUnique 添加到 对象的 DataColumnCollection时,DataTable会创建 。
ForeignKeyConstraint将 添加到 对象的 DataRelationCollection时DataRelation,会DataSet创建 。
属性
Count |
获取集合中的元素总数。 (继承自 InternalDataCollectionBase) |
IsReadOnly |
获取一个值,该值指示 InternalDataCollectionBase 是否为只读。 (继承自 InternalDataCollectionBase) |
IsSynchronized |
获取一个值,该值指示 InternalDataCollectionBase 是否已同步。 (继承自 InternalDataCollectionBase) |
Item[Int32] |
从集合中获取位于指定索引位置的 Constraint。 |
Item[String] |
从具有指定名称的集合中获取 Constraint。 |
List |
获取作为列表的集合的项。 |
List |
获取作为列表的集合的项。 (继承自 InternalDataCollectionBase) |
SyncRoot |
获取可用于同步集合的对象。 (继承自 InternalDataCollectionBase) |
方法
事件
CollectionChanged |
每当由于添加或移除 Constraint 对象而更改 ConstraintCollection 时发生。 |
扩展方法
Cast<TResult>(IEnumerable) |
将 IEnumerable 的元素强制转换为指定的类型。 |
OfType<TResult>(IEnumerable) |
根据指定类型筛选 IEnumerable 的元素。 |
AsParallel(IEnumerable) |
启用查询的并行化。 |
AsQueryable(IEnumerable) |
将 IEnumerable 转换为 IQueryable。 |
适用于
线程安全性
此类型对于多线程读取操作是安全的。 必须同步所有写入操作。