А получить изменения из датасета через GetChanges() и с изменениями залезть в датаадаптер не пробовали? В случае отката у Вас будет оригинальный датасет, в случае успешного занесения — не помню, что там делать (по моему Merge, а возможно, просто в оригинальном датасете сделать AcceptChanges).