A esto se le conoce como concurrencia optimista, dependiendo de como hayas generado el CommandText de las propiedades DeleteCommand, UpdateCommand del DataAdapter, este hace una comprobación para que los datos no hayan variado con respecto a la versión _original_ con la que llegó al DataSet (esto es útil para mantener una consistencia en tus datos), si en la ejecución de estos métodos (se ejecuta por cada fila) se devuelve 0 filas afectadas, quiere decir que los datos han variado y ya no son los mismos por lo tanto se lanza la excepción, puedes utilizar el evento
RowUpdated del DataAdapter, para decidir que acción tomar.
Saludos