Por si sola esta interacción no es un problema, el verdadero problema llega cuando luego de haber modificado o tocado este elemento se necesite guardar en base de datos y entonces dos o más usuarios quieran hacer una acción sobre un mismo elemento al mismo tiempo, ahí es donde nuestra lógica debe definir un comportamiento para saber cuál es la forma adecuada para manejar esto.
Concurrencia en Bases de Datos
Como habíamos explicado al inicio, la concurrencia es cuando dos o más actores trabajan sobre un elemento en nuestra aplicación generando una acción contra la base de datos.
Este tipo de conflictos pueden empañar el rendimiento de nuestra aplicación a ojos del usuario, por ello debemos evaluar si las áreas que se tienen valdrán la pena o no programar para la concurrencia.
Tipos de Concurrencia
Veamos algunos tipos de concurrencia, de esta forma podremos entender un poco más que tipo de acciones podemos ejecutar en nuestras aplicaciones:
¿Cómo lo resuelve ASP.NET MVC?
ASP.NET MVC no da soporte para el enfoque pesimista, por lo que debemos trabajar con el optimista, para ello debemos dotar a nuestras estructuras de campos de fecha para guardar la última vez que fue modificado, así podremos saber si el valor fue cambiado luego que obtuvimos el registro y antes de guardarlo, con ello podemos obtener una alerta y así decidir si sobrescribimos o no esos valores.
Veamos un pequeño ejemplo en código de cómo podríamos validar esto:
Notamos entonces que validamos al momento de hacer un cambio en la base de datos si el campo fue modificado luego que hicimos la lectura, en caso de ser así levantamos una excepción, con ello ya podremos tomar las acciones correspondientes, también dejamos espacio para poder trabajar las diferentes excepciones que se puedan generar.
Finalizando este tutorial ya conocemos un poco más sobre concurrencia en bases de datos y como trabajar el problema en ASP.NET MVC.