DataTable スキーマの定義

テーブルのスキーマ (構造) は、列と制約で表されます。 DataTable のスキーマは、DataColumnForeignKeyConstraintUniqueConstraint の各オブジェクトを使用して定義します。 テーブルの列は、データ ソースの列に割り当てたり、式で算出された値を格納したり、格納されている値を自動的にインクリメントしたり、主キー値を格納したりできます。

テーブルの列、リレーション、および制約を名前で参照する場合は、大文字と小文字が区別されます。 複数の列、リレーション、または制約の名前が同じであっても、大文字と小文字が異なっていれば、1 つのテーブルで使用できます。 たとえば、Col1col1 を同時に使用できます。 この場合、列を名前で参照するときは、列名の大文字と小文字を正確に指定する必要があります。正確に指定しない場合は、例外がスローされます。 たとえば、テーブル myTable に列 Col1 と列 col1 がある場合、Col1 は名前 myTable.Columns["Col1"] で参照され、col1 は名前 myTable.Columns["col1"] で参照されます。 いずれかの列を myTable.Columns["COL1"] という名前で参照しようとすると、例外が生成されます。

大文字と小文字の区別の規則は、特定の名前の列、リレーション、または制約が 1 つしかない場合には適用されません。 つまり、特定の列、リレーション、または制約オブジェクトと名前が一致する列、リレーション、または制約オブジェクトがテーブルに存在しない場合は、大文字と小文字を区別せずにそのオブジェクトを名前で参照することができます。このとき、例外はスローされません。 たとえば、テーブルに Col1 が 1 つしかない場合は、my.Columns["COL1"] を使用してこの列を参照できます。

Note

したがって、この動作は DataTableCaseSensitive プロパティの影響を受けません。 CaseSensitive プロパティは、テーブルのデータに適用され、並べ替え、検索、フィルター処理、制約の適用などに影響を及ぼします。このプロパティは、テーブルの列、リレーション、および制約の参照には適用されません。

このセクションの内容

DataTable への列の追加
DataColumn オブジェクトを使用して、テーブルの列を定義する方法について説明します。

式列の作成
列の Expression プロパティを使用して、同じ行にある他の列の値を基に値を計算する方法について説明します。

AutoIncrement 列の作成
数値を自動的にインクリメントして行ごとに一意の列値が割り当てられるように列を設定する方法について説明します。

主キーの定義
1 つ以上の DataColumn オブジェクトからテーブルの主キーを指定する方法について説明します。

DataTable の制約
テーブルの列の外部キー制約と UNIQUE 制約を定義する方法について説明します。

関連項目