Concurrecia

15/03/2005 - 11:09 por EAzoft | Informe spam
Como se suele controlar la concurrencia.

Yo hasta ahora lo que hago es lo siguiente:

Yo muestro los registros de uno en uno, mientras se esten
viendo no bloqueo nada.
Cuendo le damos a editar, tengo en cada tabla un campo
bit que controla si se esta en edicion. de esta forma
cuando entro en edicion lo pongo a 1 y cuando salgo lo
pongo a 0.
Por logica cuando entro en edicion tengo que volver a
pedir los datos de dicho registro por si se ha modificado
en el tiempo que lo he estado viendo.
Un pequeño problema es al salir, ya que se puede cortar
la conexion o salir mediante un error (esperemos que no
pase) con lo que el registro se queda bloqueado.
Pero eso estoy intentando solucionarlo.
Si alguien tiene otro modo de hacerlo
O si a alguien le parece que esta es una buena forma ...

Cualquier comentario al respecto lo agradezco bastante.
Un saludo a todos.
 

Leer las respuestas

#1 Unai Zorrilla Castro
15/03/2005 - 12:15 | Informe spam
Lo que tu implementas es algo que se conoce como '
protocolo pesimista de concurrencia ' .NET te facilita la
implementacion de un protocolo optimista de una manera muy
facil.
La idea es la siguiente, en el update se pueden establecer
unas claúsulas where para validar que la actualización sea
de los datos tal y como los tenías antes, si no se
actualiza nada es que alguien ha modificado la fila
mientras tu la estabas tratando por lo que tu versión de
datos no es correcta, ten en cuenta que los DataSet son
capaces de guardar versiones de los datos para facilitarte
esta tarea. Para conseguir esto añade un adapter
configuralo con el wizard y en opciones avanzadas dile que
implemente concurrencia optimista y ya te hará todo el,
ahora cuando hagas un Update de un dataSet si hay
problemas de concurrencia te suelta un DataException que
tendrás que controlar.
Saludos
Unai Zorrilla Castro
Como se suele controlar la concurrencia.

Yo hasta ahora lo que hago es lo siguiente:

Yo muestro los registros de uno en uno, mientras se esten
viendo no bloqueo nada.
Cuendo le damos a editar, tengo en cada tabla un campo
bit que controla si se esta en edicion. de esta forma
cuando entro en edicion lo pongo a 1 y cuando salgo lo
pongo a 0.
Por logica cuando entro en edicion tengo que volver a
pedir los datos de dicho registro por si se ha modificado
en el tiempo que lo he estado viendo.
Un pequeño problema es al salir, ya que se puede cortar
la conexion o salir mediante un error (esperemos que no
pase) con lo que el registro se queda bloqueado.
Pero eso estoy intentando solucionarlo.
Si alguien tiene otro modo de hacerlo
O si a alguien le parece que esta es una buena forma ...

Cualquier comentario al respecto lo agradezco bastante.
Un saludo a todos.
.

Preguntas similares