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
) を にDataColumnCollection追加DataColumnします。 2 番目の例では、 DataSet、2 つの DataTable オブジェクト、4 つの列、および を作成します DataRelation。 その後、制約の数が出力され、 と UniqueConstraint がオブジェクトの DataRelationCollectionにDataSet追加されたときに DataRelation が作成されることを示します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、 の オブジェクトと ForeignKeyConstraint オブジェクトの両方UniqueConstraintをDataTable含めることができます。 オブジェクトは UniqueConstraint 、データの整合性を維持するために、特定の列のデータが常に一意であることを確認します。 は ForeignKeyConstraint 、 のデータが更新または削除されたときに関連テーブルで発生する処理を DataTable 決定します。 たとえば、行が削除された場合、 ForeignKeyConstraint は関連する行も削除されるか (連鎖)、またはその他の一連のアクションが決定されます。
注意
に 2 つのテーブル間のリレーションシップを作成する をDataSet追加DataRelationすると、 と のUniqueConstraint両方ForeignKeyConstraintが自動的に作成されます。 UniqueConstraintは親 DataTableの主キー列に適用され、そのテーブルの ConstraintCollectionに制約が追加されます。 ForeignKeyConstraintは主キー列と外部キー列に適用され、制約は子テーブルの ConstraintCollectionに追加されます。
ではConstraintCollection、 などのAddClear標準のコレクション メソッドが使用されますRemove。 さらに、 メソッドを Contains 使用して、コレクション内の特定の制約の存在を検索できます。
UniqueConstraintは、 プロパティが にtrue
設定された がDataColumnUniqueオブジェクトの DataColumnCollectionにDataTable追加されるときに作成されます。
ForeignKeyConstraintは、 がオブジェクトの DataRelationCollectionにDataSet追加されるときに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 に変換します。 |
適用対象
スレッド セーフ
この型は、マルチスレッド読み取り操作に対して安全です。 すべての書き込み操作を同期する必要があります。
こちらもご覧ください
.NET