/// <devdoc>
/// <para>
/// Merges this <see cref='System.Data.DataSet'/> into a specified <see cref='System.Data.DataSet'/> preserving changes according to
/// the specified argument, and handling an incompatible schema according to the
/// specified argument.
/// </para>
/// </devdoc>
public void Merge(DataSet dataSet, bool preserveChanges, MissingSchemaAction missingSchemaAction) {
IntPtr hscp;
Bid.ScopeEnter(out hscp, "<ds.DataSet.Merge|API> %d#, dataSet=%d, preserveChanges=%d{bool}, missingSchemaAction=%d{ds.MissingSchemaAction}\n", ObjectID, (dataSet != null) ? dataSet.ObjectID : 0, preserveChanges, (int)missingSchemaAction);
try {
// Argument checks
if (dataSet == null)
throw ExceptionBuilder.ArgumentNull("dataSet");
switch (missingSchemaAction) { // @perfnote: Enum.IsDefined
case MissingSchemaAction.Add:
case MissingSchemaAction.Ignore:
case MissingSchemaAction.Error:
case MissingSchemaAction.AddWithKey:
Merger merger = new Merger(this, preserveChanges, missingSchemaAction);
merger.MergeDataSet(dataSet);
break;
default:
throw Common.ADP.InvalidMissingSchemaAction(missingSchemaAction);
}
}
finally {
Bid.ScopeLeave(ref hscp);
}
}