DataRow オブジェクトの配列を現在の DataSet にマージします。指定した引数に従って、この DataSet に行われた変更を保持または破棄し、互換性のないスキーマを処理します。
Overloads Public Sub Merge( _
ByVal rows() As DataRow, _ ByVal preserveChanges As Boolean, _ ByVal missingSchemaAction As MissingSchemaAction _)
[C#]
public void Merge(DataRow[] rows,boolpreserveChanges,MissingSchemaActionmissingSchemaAction);
[C++]
public: void Merge(DataRow* rows[],boolpreserveChanges,MissingSchemaActionmissingSchemaAction);
[JScript]
public function Merge(
rows : DataRow[],preserveChanges : Boolean,missingSchemaAction : MissingSchemaAction);
パラメータ
- rows
DataSet にマージされる DataRow オブジェクトの配列。 - preserveChanges
DataSet に対して行われた変更を保持するには true 。保持しない場合は false 。 - missingSchemaAction
MissingSchemaAction 値の 1 つ。
解説
Merge メソッドを使用して、スキーマがほとんど同様の 2 つの DataSet オブジェクトをマージします。マージは、通常、データ ソースから既存の DataSet に直前の変更を組み込むために、クライアント アプリケーションで使用されます。これにより、クライアント アプリケーションが更新された DataSet と、データ ソースからの最新データを入手できます。
通常、 Merge メソッドは、変更の検証、エラーの調整、変更されたデータ ソースの更新、および最後に既存の DataSet の更新に関係する一連のプロシージャの終わりに呼び出されます。
クライアント アプリケーションには通常、変更されたデータを収集し、中間層コンポーネントに戻す前に検証するためにクリックできる単一のボタンがあります。このシナリオでは、初めに GetChanges メソッドを呼び出します。このメソッドは、検証とマージのために最適化された 2 番目の DataSet を返します。2 番目の DataSet オブジェクトには、変更された DataTable オブジェクトおよび DataRow オブジェクトだけが含まれ、元の DataSet のサブセットになります。このサブセットは一般的に小さいため、中間層コンポーネントに効率よく渡されます。次に、中間層コンポーネントは、ストアド プロシージャを通じて変更のある元のデータ ソースを更新します。次に、中間層は (元のクエリを再び実行することによって) 元のデータとデータ ソースからの最新のデータを含む新しい DataSet を返信するか、データ ソースから変更の加えられたサブセットを返信できます。たとえば、データ ソースが自動的に一意の主キー値を作成する場合、その値はクライアント アプリケーションに反映できます。どちらの場合にも、返された DataSet は、 Merge メソッドで、クライアント アプリケーションの元の DataSet にマージできます。
Merge メソッドを説明するため、現在の DataSet を "ターゲット"、2 番目の (パラメータ) DataSet を "ソース" と呼ぶことにします。ターゲット DataSet はアクション (マージ) の対象であるため、それに応じた名前になります。2 番目の DataSet に含まれる情報は変化せず、現在の DataSet にマージされるため、"ソース" になります。
Merge メソッドが呼び出されたときは、スキーマが変更されている可能性があるため、2 つの DataSet オブジェクトのスキーマが比較されます。たとえば、B to B シナリオでは、自動処理によって新しい列が XML スキーマに追加されていることがあります。ソース DataSet がターゲットに不足しているスキーマ要素 (追加された DataColumn オブジェクト) を格納している場合、そのスキーマ要素は引数 missingSchemaAction を MissingSchemaAction.Add に設定して、ターゲットに追加できます。この場合、マージされた DataSet は、追加されたスキーマとデータを格納します。
スキーマのマージ後に、データをマージします。
新しいソース DataSet をターゲットにマージする場合、 DataRowState 値が Unchanged 、 Modified 、または Deleted であるすべてのソース行が、同じ主キー値を持つターゲット行と照合されます。 DataRowState 値が Added のソース行は、新しいソース行と同じ主キー値を持つ新しいターゲット行と照合されます。
マージ中に、制約は無効になります。マージの終了時に制約を有効にできない場合は、 ConstraintException が生成され、制約は無効になりますが、マージされたデータは保持されます。この場合、 EnforceConstraints プロパティは false に設定され、無効なすべての行はエラー時にマークされます。エラーは、 EnforceConstraints プロパティを true にリセットする前に解決する必要があります。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ
参照
DataSet クラス | DataSet メンバ | System.Data 名前空間 | DataSet.Merge オーバーロードの一覧