データアダプタでのテーブル割り当て

更新 : 2007 年 11 月

データアダプタがデータ ソースからデータを読み取る場合は、テーブル割り当てを使用して、対応するデータセット テーブルのどこにデータを格納するかを決定します。この割り当ては、ソース内の列の名前をデータセット テーブル内の列の名前にリンクしています。たとえば、データ ソース内の au_id という列の情報がデータセット テーブル内の author_id_number という列に属しているような場合が考えられます。

byt00a0h.alert_note(ja-jp,VS.90).gifメモ :

以前のバージョンの Visual Studio では、アプリケーションとデータベースの通信にデータ アダプタが使用されていました。データ アダプタは現在も .NET Framework データ プロバイダ (ADO.NET) の主要なコンポーネントですが、TableAdapter はデザイナで生成されるコンポーネントで、アプリケーションとデータベースの間でデータを移動する処理を簡略化します。TableAdapter の操作方法の詳細については、「TableAdapter の概要」を参照してください。

Visual Studio ツールを使用してデータ ソースの情報からデータセットを生成した場合、既定では、データセットの要素の名前はデータ ソースでの名前と同じになります。ただし、データ ソース内の名前とデータセット内の名前が一致しない場合もあります。

  • 異なる名前を使用する既存のスキーマからデータセットが生成された場合。

  • 使いやすさ、読みやすさ、外国語との間の変換、またはその他の理由から、データセット内のデータ要素名を変更する必要がある場合。

  • アダプタからデータセットを生成するときに、型指定されたデータ メンバの名前を制御する場合。

テーブル割り当ての構造

テーブル割り当ては、アダプタの TableMappings プロパティによって確立されます。これは DataTableMapping 型の項目のコレクションです。割り当てるテーブルのセットそれぞれについて、1 つの DataTableMapping オブジェクトがあります。通常、アダプタは 1 つのソース テーブルと 1 つのデータセット テーブルだけに関連付けられるため、この項目は 1 つしかありません。ただし、ストアド プロシージャは複数の行セットを返す場合があります。その場合、2 番目以降のテーブルは TableMappings コレクションの 2 番目以降の割り当てを使用して割り当てられます。

それぞれの割り当て項目には、データ ソース テーブルおよびデータセット テーブルを識別するプロパティ、および実際の割り当てを表す項目を含む ColumnMappings プロパティが含まれます。

テーブル割り当ての動作

データ アダプタの Fill メソッドを呼び出すと、アダプタは以下のプロセスを実行して、データセット内のどこにデータを書き込むかを決定します。

  1. TableMappings オブジェクト内で各ソース列名を探します。

  2. ソース列名が見つかったら、データセット テーブル内の対応する列の一致する (関連付けられた) 名前を取得します。

  3. 手順 2 で取得した名前を使用して、ソース列のデータを対応するデータセット列に書き込みます。

さまざまな条件において、アダプタが上記のプロセスを実行できない場合があります。主要なものは次の 2 つです。

  • ソース列に対して割り当てが見つからない場合。この原因としては、TableMappings プロパティに何も定義されていないか、特定の列が割り当てられていないことが考えられます。

  • 書き込む列が TableMappings プロパティに割り当てられているかどうかに関係なく、その列がデータセットのスキーマに定義されていない場合。

アダプタには、このいずれかの状況に当てはまる場合にどのように処理するかを指定するための 2 つのプロパティが用意されています。これらの状況が発生してもアダプタはデータセットにデータを格納できるため、必ずしもエラーではありません。

MissingMappingAction プロパティは、マップが見つからない場合にアダプタがどのように処理するかを指定するために使用します。次の設定が可能です。

  • Passthrough - アダプタは、列のデータを同じ名前のデータセット列に格納します。同じ名前のデータセット列がない場合、動作は下記の MissingSchemaAction の設定に依存します。

  • Ignore - 適切に割り当てられていない列は、データセットに読み込まれません。

  • Error - エラーを発生させます。

MissingSchemaAction プロパティでは、アダプタがデータセットのスキーマに定義されていない列にデータを書き込もうとしたときの処理を指定します。次の値を使用できます。

  • Add - テーブルまたは列がスキーマおよびデータセットに追加されます。

  • AddWithKey - テーブルまたは列が、主キーに関する情報と共にデータセットおよびスキーマに追加されます。

  • Ignore - データセット スキーマに表されていないテーブルまたは列はデータセットに追加されません。

  • Error - エラーを発生させます。

一般には、両方のプロパティを組み合わせて設定することにより、アプリケーション固有のニーズを満足させます。MissingMappingAction プロパティを Passthrough に、MissingSchemaAction プロパティを Add に設定すると、データセットでテーブル名および列名が自動的にソースから複製されます。

逆に、データセット スキーマが厳密に定義されたアプリケーションでは、エラーのチェックを指定できます。そのような場合、データセット内の格納先の列を明確に定義せずにソースからデータを取得すると、ビジネス ルールの違反などのエラーになる可能性があります。

スキーマに明示的に定義したデータまたは TableMappings プロパティで割り当てられているデータだけをデータセットに読み込む場合は、Ignore を指定します。これは、データセット内で必要な数よりも多い列を返すストアド プロシージャまたは SQL ステートメントをアダプタが呼び出す場合に便利です。

参照

処理手順

方法 : データ ソース列をデータセットのデータ テーブル列に割り当てる

概念

データアダプタの概要

DataAdapter からの DataSet の読み込み (ADO.NET)

データの新機能

Visual Studio を使用したデータ アプリケーションの作成

参照

[Table Mappings の設定] ダイアログ ボックス

その他の技術情報

DataAdapter と DataReader (ADO.NET)

データアダプタの作成

データに関するチュートリアル

ADO.NET