Pues eso nuevamente hay varias formas de enfrentarlo.
La primera y mas simple, es encerrar todo en una transacción (no poner las transacciones automáticas), y si después se quiere cancelar bastará con hacer Transaccion.RollBack. Es una solución mas simple pero puede ocasionarte conflictos con locks en la base de datos, principalmente si el usuario A decide ir a almorzar habiendo dejado abierta la transacción, cosa poco recomendable.
Otra, un poco mas compleja pero mas funcional, es mantener todas las actualizaciones en cache y voltearlas luego todas juntas a la base de datos, sobre lo cual te recomiendo buscar y leer alguna información. Comenzá por la ayuda de la propiedad CachedUpdates.
Espero haberte ayudado con esta pequeña explicación.
Hasta luego
