ConstraintCollection 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示為 DataTable 的條件約束 (Constraint) 集合。
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
- 繼承
- 屬性
範例
第一個DataTableDataColumn範例會建立 ,並將其 Unique 屬性設定true
為) 新增至 (DataColumnCollection。 第二個範例會建立 、兩DataTable個物件、四個DataSet數據行和 。DataRelation 然後會列印條件約束計數,ForeignKeyConstraint以顯示 將 新增至 DataSet 物件的 DataRelationCollection時DataRelation,會建立 和 UniqueConstraint 。
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 判斷相關數據列是否也會 (在串聯) 或一些其他動作過程中刪除。
注意
當您將建立兩個DataSet資料表之間關聯性的 加入 DataRelation 時,會自動ForeignKeyConstraint建立 和 UniqueConstraint 。 UniqueConstraint會套用至父DataTable系 中的主鍵數據行,並將條件約束加入至該數據表的 ConstraintCollection。 ForeignKeyConstraint會套用至主鍵資料列和外鍵數據行,且條件約束會加入子資料表的 ConstraintCollection。
使用 ConstraintCollection 標準集合方法, 例如 Add、 Clear與 Remove。 此外, Contains 方法可用來尋找集合中特定條件約束是否存在。
當 將 屬性設定true
為 的 時, 就會建立 DataColumnUnique , UniqueConstraint 加入物件 DataTable 的 DataColumnCollection。
當 ForeignKeyConstraint 加入至 DataSet 物件的 DataRelationCollection時DataRelation,就會建立 。
屬性
Count |
取得集合中的項目總數。 (繼承來源 InternalDataCollectionBase) |
IsReadOnly |
取得值,這個值表示 InternalDataCollectionBase 是否為唯讀。 (繼承來源 InternalDataCollectionBase) |
IsSynchronized |
取得值,表示 InternalDataCollectionBase 是否同步處理。 (繼承來源 InternalDataCollectionBase) |
Item[Int32] |
從集合的指定索引處取得 Constraint。 |
Item[String] |
以指定名稱從集合取得 Constraint。 |
List |
取得集合的項目做為清單。 |
List |
取得集合的項目做為清單。 (繼承來源 InternalDataCollectionBase) |
SyncRoot |
取得可以用來同步集合的物件。 (繼承來源 InternalDataCollectionBase) |
方法
事件
CollectionChanged |
由於正在加入或移除 ConstraintCollection 物件而導致 Constraint 變更時,就會發生此情況。 |
擴充方法
Cast<TResult>(IEnumerable) |
將 IEnumerable 的項目轉換成指定的型別。 |
OfType<TResult>(IEnumerable) |
根據指定的型別來篩選 IEnumerable 的項目。 |
AsParallel(IEnumerable) |
啟用查詢的平行化作業。 |
AsQueryable(IEnumerable) |
將 IEnumerable 轉換成 IQueryable。 |
適用於
執行緒安全性
此類型適用於多線程讀取作業。 您必須同步處理任何寫入作業。