Estoy escribiendo una aplicación en C# que accede a una base de datos SQL Server 2005. La aplicación requiere una gran cantidad de bases de datos, e incluso si trato de optimizar todos los accesos, configurar los índices adecuados, etc., espero que tarde o temprano tenga problemas. Sé por qué ocurren los bloqueos de la base de datos, pero dudo que pueda lanzar el software sin bloqueos que ocurran en algún momento. La aplicación está utilizando Entity Framework para el acceso a la base de datos.Patrones para manejar un punto muerto SQL en C#?
¿Hay algún buen patrón para manejar SQLExceptions (interbloqueos) en el código de cliente de C#, por ejemplo, para volver a ejecutar el lote de instrucciones después de x milisegundos?
Para aclarar; No estoy buscando un método sobre cómo evitar interbloqueos en primer lugar (niveles de aislamiento, índices, orden de declaraciones, etc.) sino cómo manejarlos cuando realmente ocurren.
¿Puede decirme cómo realizó la nueva operación real de la transacción? ¿Pusiste un simple bucle para el código en cada lugar donde tuviste una transacción o obtuviste una solución más genérica? – martin
Implementamos un bucle. Si la transacción falla, debido a una situación de punto muerto, devolvimos la transacción completa y volvimos a intentarla hasta 5 veces. –