ConstraintCollection 類別

定義

表示為 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
繼承
ConstraintCollection
屬性

範例

第一個DataTableDataColumn範例會建立 ,並將其 Unique 屬性設定true為) 新增至 (DataColumnCollection。 第二個範例會建立 、兩DataTable個物件、四個DataSet數據行和 。DataRelation 然後會列印條件約束計數,ForeignKeyConstraint以顯示 將 新增至 DataSet 物件的 DataRelationCollectionDataRelation,會建立 和 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 物件DataTableUniqueConstraint對象可確保特定數據行中的數據一律是唯一的,以保留數據完整性。 會 ForeignKeyConstraint 決定當 中的數據更新或刪除時,相關數據表中 DataTable 會發生什麼情況。 例如,如果刪除數據列,則會 ForeignKeyConstraint 判斷相關數據列是否也會 (在串聯) 或一些其他動作過程中刪除。

注意

當您將建立兩個DataSet資料表之間關聯性的 加入 DataRelation 時,會自動ForeignKeyConstraint建立 和 UniqueConstraintUniqueConstraint會套用至父DataTable系 中的主鍵數據行,並將條件約束加入至該數據表的 ConstraintCollectionForeignKeyConstraint會套用至主鍵資料列和外鍵數據行,且條件約束會加入子資料表的 ConstraintCollection

使用 ConstraintCollection 標準集合方法, 例如 AddClearRemove。 此外, Contains 方法可用來尋找集合中特定條件約束是否存在。

當 將 屬性設定true為 的 時, 就會建立 DataColumnUniqueUniqueConstraint 加入物件 DataTableDataColumnCollection

ForeignKeyConstraint 加入至 DataSet 物件的 DataRelationCollectionDataRelation,就會建立 。

屬性

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

適用於

執行緒安全性

此類型適用於多線程讀取作業。 您必須同步處理任何寫入作業。

另請參閱