Te sugiero evaluar el uso de actualizaciones en cache (cachedupdates). Esto hará que los cambios aplicados por el usuario a los datasets sean almacenados en memoria hasta que llames a applyUpdates, logrando que la duración de la transacción sea mínima, sin perder la capacidad de dar marcha atras si el usuario se arrepiente (CancelUpdates)
Hasta luego.