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.

Preguntas similare

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.
.

Respuesta Responder a este mensaje
#2 Anonimo
15/03/2005 - 13:55 | Informe spam
Puede usted realizar aportación de código al respecto ?

Y otra c uestión, si no se tiene un Dataset, cómo podría
controlarse ?


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.
.



.

Respuesta Responder a este mensaje
#3 Unai Zorrilla Castro
15/03/2005 - 14:08 | Informe spam
Te vasta con googlear un poco

El mas claro
http://www.dotnetmania.com/Articulo.../dnm3pg20-
26.pdf

De Microsoft

http://msdn.microsoft.com/library/S...l/cpconOpt
imisticConcurrency.asp?frame=true

http://msdn.microsoft.com/library/default.asp?
url=/library/en-
us/cpguide/html/cpconoptimisticconcurrency.asp

Saludos
Unai Zorrilla Castro
Puede usted realizar aportación de código al respecto ?

Y otra c uestión, si no se tiene un Dataset, cómo podría
controlarse ?


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.
.



.



.

Respuesta Responder a este mensaje
#4 EAzoft
16/03/2005 - 21:11 | Informe spam
Gracias UNAI:

Habia leido bastante sobre el tema pero pense que a lo
mejor habia mejor forma, porque de la forma optimista,
hasta que no has terminado de realizar los cambios, no
sabes si se estan modificando a la vez por otra persona.
con lo que para tratar este error la mejor solucion seria
mostarle nuestros los datos que queremos poner en la BD y
los que acaban de modificar.

La solucion que voy a tomar en para ciertas partes como
son los mantenimientos hacerlo con corrurrencia optimista
y los procesos con un mayor riesgo, hacer la forma
pesimista.

Gracias.


Te vasta con googlear un poco

El mas claro
http://www.dotnetmania.com/Articulo.../dnm3pg20-
26.pdf

De Microsoft

http://msdn.microsoft.com/library/S...tml/cpconO


pt
imisticConcurrency.asp?frame=true

http://msdn.microsoft.com/library/default.asp?
url=/library/en-
us/cpguide/html/cpconoptimisticconcurrency.asp

Saludos
Unai Zorrilla Castro
Puede usted realizar aportación de código al respecto ?

Y otra c uestión, si no se tiene un Dataset, cómo




podría
controlarse ?


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.
.



.



.



.

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida