| ID | Asunto | Fecha | Nick | |
| 51203 | Acceso a Datos en C# | 02/12/09 18:01 | Alvaro_t | |  |
Tengo una duda de diseño bastante importante. Lo explicaré con un ejemplo. Tengo dos tablas, por ejemplo clientes y facturas (En realidad son mas pero por simplificar). Quiero hacer una aplicacion en capas para mas de un puesto, con C# y SQL Server. Para acceder a los datos, tengo varias opciones con sus ventajas y desventajas:
1 .Modo que llaman siempre conectado: no se ocmo funciona ni si se pueden conectar dos usuarios a la vez. 2. Modo desconectado: varias formas: 2.1 Trayendo todos los datos, metiendolos en un dataset o datatables, operar con ellos y hacer Updates. El problema es que si traigo los datos y en lo que trabajo con ellos otro usuario en otro puesto los modifica tendría problemas de concurrencia. LA unica solucion sería estar actualizandolos constantemente. 2.2 Ser mas selectivo y traer unicamente datos concretos. Al final tendría que traer bastante para buscar, y si uno de los datos que se traen los cambia el otro usuario...concurrencia.
Una forma de eliminar esos problemas sería que cuando un usuario acceda a un dato, se bloquee para el otro usuario (en una tabla llamada bloqueos, por ejemplo), aunque es un poco lio y si un usuario necesita toda la tabla para consultas o algo...habría que bloquearla entera y el otro usuario no podría hacer nada.
No se que opcion os parece la mas acertada, o como sería mejor. Otra duda que tengo es si usar Stored Procedures o hacer los Select, Insert y demas y enviarlos como parametros. |
|
| ID | Asunto | Fecha | Nick | |
| 51205 | Re: Acceso a Datos en C# (Resp: 51203) | 02/12/09 19:11 | Jave18202 | |  |
Hola, y que tal si mejor "bloqueas" los registros, algo como que, marques los registros de tal forma que si otro usuario entra no se le muestren o le adviertan que están siendo utilizados o modificados por otra persona, podría ser con un campo de estado o algo así, ahora, para las sentencias me parece mejor que utilizarás los procedimientos almacenados, de esta manera le quitas un poco de trabajo a tu aplicación y dejas que tu base de datos se encargue de eso, sería un poco más rápido, creo yo
espero te sirva, saludos
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51207 | Re: Acceso a Datos en C# (Resp: 51203) | 02/12/09 19:23 | Alvaro_t | |  |
Si habia pensado en la posibilidad de añadir un campo de bloqueo o algo asi, lo que no se es si hay una forma mas fina de hacerlo, porque no creo que se haga siempre asi, me explico: Imaginemos que a la tabla clientes accede el usuario1 y carga un datatable con toda la informacion para ver la lista en un datagridview. Si bloqueo toda la tabla el usuario 2 no podría hacer nada. Si no la bloqueo, el usuario 2 puede coger y cambiar algo de un cliente, y cuando el usuario 1 quiere seleccionar en el datagridview ese cliente que ha modificado el usuario2 para hacer algo con el puede incluso no existir ya. Es un caso extremo pero en lo que yo quiero hacer se puede dar.
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51208 | Re: Acceso a Datos en C# (Resp: 51203) | 02/12/09 19:42 | Alvaro_t | |  |
Gracias, por la respuesta, s eme olvido ponerlo antes,jeje. Bueno, me autorespondo yo solo,jeje. El caso que expuse antes es inevitable, creo yo, porque la unifa forma sería bloquear solo en caso de que se quiera modificar o algo asi, con lo que habría que mandar una nueva consulta a mayores para bloquear. He encontrado una explicacion en MSDN que puede serme de utilidad. La pongo aqui por si a alguien mas le interesa : http://msdn.microsoft.com/es-es/library/aa0416cz.aspx [Editado: Alvaro_t, 02/12/2009 19:42:20]
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |
|
| ID | Asunto | Fecha | Nick | |
| 51240 | Re: Acceso a Datos en C# (Resp: 51208) | 04/12/09 20:22 | DragonRed | |  |
lo que podrias hacer es poner un campo modificador, que cuando este en true, quiere decir que el registro esta siendo editado, por lo tanto el resto de usuario sólo puede ver la información hasta que el dueño grabe o cancele el cambio.
Saludos Lima Peru
"Si se puede imaginar, se puede programar"
Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias. |