¿Cuál es la mejor manera de administrar la concurrencia en una aplicación de acceso a la base de datos?

Hace un tiempo, escribí una aplicación utilizada por múltiples usuarios para manejar la creación de oficios. No he desarrollado durante mucho tiempo, y no puedo recordar cómo gestioné la concurrencia entre los usuarios. Por lo tanto, estoy buscando algunos consejos en términos de diseño.

La aplicación original tenía las siguientes características:

Un cliente pesado por usuario.Una sola base de datos.Acceso a la base de datos para cada usuario para insertar / actualizar / eliminar operaciones.Una cuadrícula en la aplicación que refleja la tabla de oficios. Esa grilla se actualiza cada vez que alguien cambia un trato.Estoy usando WPF.

Esto es lo que me pregunto:

¿Estoy en lo cierto al pensar que no debería importarme la conexión a la base de datos para cada aplicación? Teniendo en cuenta que hay un singleton en cada uno, esperaría una conexión por cliente sin ningún problema.

¿Cómo puedo evitar la concurrencia de los accesos? Supongo que debería bloquear al modificar los datos, sin embargo, no recuerdo cómo hacerlo.

¿Cómo configuro la grilla para que se actualice automáticamente cada vez que mi base de datos sea actualizada (por otro usuario, por ejemplo)?

¡Gracias de antemano por su ayuda!

Respuestas a la pregunta(2)

Su respuesta a la pregunta