Pregunta

¿Hay alguna forma fácil de hacer lo que mejor describe como una "Eliminar en cascada" en LLBLGen? Un ejemplo de lo que estoy buscando:

Tienes estas tablas:

Customer:  
-Id

Order:  
-Id  
-CustomerId

OrderDetail:
-Id
-OrderId

Ahora, quiero eliminar un cliente específico y todas las cosas que dependen de ella (todos sus órdenes, y OrderDetails todas sus órdenes). Desde la base de datos va a lanzar un ataque si elimino un cliente antes de eliminar las órdenes que tienen su identificación como una clave externa, necesito más o menos:

  1. Obtener el cliente
  2. Obtener los pedidos del cliente
  3. Obtener OrderDetails cada órdenes
  4. Eliminar cada OrderDetail
  5. Eliminar cada Orden
  6. Eliminar cada cliente

Ahora, esto parece una muy común task- yo creo que haya algún tipo de Borrar (Entidad entityToDelete, bool isRecursive) función en algun lugar. De todos modos, ¿hay alguna manera fácil de hacer esto?

¿Fue útil?

Solución

No, LLBLGen Pro no admite eliminaciones en cascada. No hemos construido en este por las siguientes razones: - que no siempre es posible hacer eliminaciones en cascada (ejemplo de un modelo en forma de diamante, donde dos / más caminos llevan de A a B Esta es también la razón, por ejemplo, SQL Server no siempre realiza / permite eliminaciones en cascada. -. En la herencia de destino-por-entidad, eliminaciones en cascada no es posible

Lo hacemos volumen de soporte elimina directamente en la db. Por lo que no tiene que ir a buscar a todas las entidades a eliminar en primer lugar. Por ejemplo, para eliminar todos los detalles de la orden de los pedidos de los clientes, crear una eliminación directa sobre OrderDetails donde se especifica como un predicado de filtro fieldcompareset donde se especifica un filtro en orden basado en la idcliente en orden. A continuación, elimine los pedidos utilizando el mismo predicado (sin la unión), y elimine el cliente. Puede agrupar estas eliminaciones en una unidad de trabajo para ejecutarlos en 1 go en una operación más fácil.

Si se queden con esto, por favor, enviar la pregunta en nuestros foros: http: //www.llblgen. com / tinyforum .Estamos encantados de ayudarle a

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top