I don't understand what a "deep" copy is but I do understand that the dataset
passed to the dataadapter is a copy of the original and what you're saying is
"We'll have two copies of our dataset. And we'll keep one safe while we make
all our changes via the copy. And at the end of the process, if we're not
happy, we'll go back to the UNCHANGED original but if we are happy we'll call
acceptchanges on the original."
A problem with this approach is that getting any data returned from the
database back into the original dataset is very difficult - identity values
for instance.
However, my real issue is that the original dataset, the one we'll go back
to if we have some problems, won't include the error messages applied during
RowUpdating and RowUpdated - because these error messages have been applied
to the copied dataset, the one we passed to the dataadapter.
So if there are some failures with the update, and I roll back the
transaction and I go back to my unchanged original datastet, I'll also have
to lose all my error messages - the very things that will tell the user what
needs to be fixed.
I hope this makes my problem clearer.