RowsUpdated = DataAdapter.Update(ds, ds.Tables[tableName].ToString());And check the DataAdapter's UpdateCommand... it should have code that looks something like this if it's set for optimistic concurrency:
SET CustomerID = @CustomerID, CompanyName = @CompanyName, ContactName = @ContactName, ContactTitle = @ContactTitle, City = @City WHERE (CustomerID = @Original_CustomerID) AND (City = @Original_City OR @Original_City IS NULL AND City IS NULL) AND (CompanyName = @Original_CompanyName) AND (ContactName = @Original_ContactName OR @Original_ContactName IS NULL AND ContactName IS NULL) AND (ContactTitle = @Original_ContactTitle OR @Original_ContactTitle IS NULL AND ContactTitle IS NULL)Either way, I would wait until you hit this breakpoint before making the new change on the backend. That should eliminate the possiblity of extraneous, "rogue" code being the culprit. Then, try the save and see if you get the concurrency exception.