title: Using DataTable.Clone() to save and revert changes to a database
body: <p>In order to provide the ability to revert changes that have taken place in a database table, I have created a <code>Clone()</code> of the DataTable prior to a large number of changes.  The users have the ability to go through a number of forms before deciding to cancel the changes.  At the end of the process, if they have chosen to cancel, I would like to update the Clone()'d data back to the database.
  I'm not sure if it makes sense to delete the row that has already been added and then add back the original Clone()'d row, or to update the row that is scheduled to be updated?
  It seems that if I were to update the original row, I would have to loop through to copy the rows from the clone to the original?  Or is there another way?</p>
  
  <pre><code>// Clone the original data
  cloneDataTable = origDataTable.Clone();
  cloneDataTable.ImportRow(dataRow);
  
  // Later in the process, if I need to delete the row
  dataRow.Delete();
  tableAdapter.Update(dataRow);
  
  // I was considering that I could add the cloned row back in this fashion
  origDataTable.ImportRow(cloneDataTable.Rows[0]);
  tableAdapter.Update(dataRow);
  </code></pre>
  
  <p>I may have confused the issue but am basically looking for a simple and efficient method of restoring the originally Clone()'d data back to the database after the series of insert/updates have already been performed.<br>
  Ideally I would like to perform an update since a database insert causes a sequence value to increment that I'd like to avoid.</p>
  
  <p>Thanks for any help, and please ask for any clarifications if necessary.</p>