この内容が全く理解できません。 @ プライマリーデータソース、セカンダリーデータソースって何ですか?Load()の結果Setが複数あり、一つ目をプライマリー、二つ目以後を纏めてセカンダリーと呼んでるのでしょうか? A 「プライマリ データ ソースから送信され」とは、Dt.Load()とした場合のDtにスキーマ情報が無い場合は、プライマリーデータからスキーマ情報をすべて取得することを前提としているという解釈でしょうか? B 「データをプライマリ データ ソース DataTableに反映することを前提」とは、Dt.Load() のDtにスキーマ情報が存在する場合は、必要に応じて列の追加処理を行うという意味でしょうか? C 「主キー比較に使用する行の特定のバージョン」とは、OverwriteChangesは、Originalの主キーデータを、PreserveChangesは、Currentの、Upsertは、Originalが存在すればOriginalを存在しなければCurrentの値を比較するという意味であってますか?
まずそもそも、DataTable.Load(IDataReader, LoadOption)は、 > Fills a DataTable with values from a data source using the supplied IDataReader. If the DataTable already contains rows, the incoming data from the data source is merged with the existing rows according to the value of the loadOption parameter. > IDataReaderによって提供されるデータソースの値でDataTableを満たします。データテーブルがすでに行を含んでいる場合、データソースからのデータはloadOptionパラメータの値に従って既存の行とマージされます。 というメソッドであり、loadOptionパラメータは「データソースからのデータ」と「DataTableに既に存在しているデータ」のマージの方法を指定するものです。 例えばDataTableが空であれば特に意味を持ちません。
> C 「主キー比較に使用する行の特定のバージョン」とは、OverwriteChangesは、Originalの主キーデータを、PreserveChangesは、Currentの、Upsertは、Originalが存在すればOriginalを存在しなければCurrentの値を比較するという意味であってますか?
DataTable は、単一の主データソース(a single primary data source)により同期・更新されます。 さらに DataTable には、1 つ以上の 2 次データソース(one or more secondary data sources)の 増分データ(incremental data)を加えることもできます。
> C 「主キー比較に使用する行の特定のバージョン」とは、 > OverwriteChangesは、Originalの主キーデータを、 > PreserveChangesは、Currentの、 > Upsertは、Originalが存在すればOriginalを存在しなければCurrentの値を比較するという意味であってますか?
既存行に対する DataRow の特定は PrimaryKey 制約によって行われるわけですが、マッチングされた既存行の RowState As DataRowState プロパティに対して、LoadOption がどのように作用するのかを示したものですね。