Tengo un problema que no estoy seguro de cuál es la mejor solución.Operaciones de SQL asíncronas
Tengo una aplicación que actualiza una base de datos en respuesta a solicitudes ad hoc. Una solicitud en particular es bastante común. La solicitud es una actualización que, por sí sola, es bastante simple, pero tiene algunas condiciones previas complejas.
- para esta solicitud la capa de negocio primeras solicitudes un conjunto de datos de la capa de datos .
- La capa de lógica de negocio evaluó los datos de la base de datos y parámetros de la petición, desde esta la acción a realizar se determina , y el mensaje la respuesta de la solicitud (s) se crean.
- La capa empresarial ahora ejecuta el comando de actualización real que es el propósito de la solicitud .
Este último paso es el problema, este comando depende del estado de la base de datos, que puede haber cambiado desde que se ejecutó la lógica comercial. Bloquear los datos leídos en esta operación en varios viajes de ida y vuelta a la base de datos tampoco parece una buena idea. ¿Hay alguna forma de "mejores prácticas" para lograr algo como esto? Gracias!
Sí, pero esto pone la lógica empresarial (que me gustaría poder cambiar fácilmente) en un procedimiento almacenado. – Paul
@Paul, no si el proceso almacenado solo está comprobando para validar que los datos no han cambiado. Yo diría que si todo lo que está haciendo en el BL es verificar las condiciones para determinar la tabla/columnas correctas para actualizar, eso debería estar en un proceso almacenado de todos modos. – AllenG
Comprobar que la integridad referencial y las claves foráneas estarán bien es la mejor práctica, tener el db soporte implícito de lógica de negocios a través de estructura y metadatos (en lugar de explícitamente a través de código de procedimiento artificial) también es una buena práctica. – amelvin