2008-09-25 10 views
5

Heredé un proyecto que utiliza LLBLGen Pro para la capa de base de datos. El modelo DB requiere que cuando se borre una entrada, un indicador (DeletedDate se establezca en la hora actual). El último programador ignoró este requisito y ha utilizado eliminaciones regulares a lo largo de toda la aplicación.LLBLGen: ¿Cómo puedo recuperar una entrada

¿Hay alguna manera de configurar el generador de código para que lo haga automáticamente o tengo que sobrecargar a cada operador de eliminación para las entidades que lo requieren?

Respuesta

4

Implementé esto en SQL Server 2005 utilizando los desencadenadores INSTEAD OF en delete para cualquier tabla de eliminación suave. Los desencadenantes establecen el indicador de eliminación y realizan la limpieza. La belleza de esta solución es que maneja correctamente las eliminaciones emitidas por cualquier sistema que acceda a la base de datos. EN LUGAR DE QUE es relativamente nuevo en SQL Server, sé que hay un equivalente de Oracle.

Esta solución también se juega muy bien con nuestro asignador O/R - Creé vistas que filtran los registros eliminados y mapeados. Las vistas también se usan para todos los informes.

+1

Muy buena sugerencia: parece que sería útil independientemente de la elección específica de ORM u otra estrategia DAL. –

2

Puede crear tareas personalizadas en LLBLGen que anularían aquellas cuando genere entidades. Eche un vistazo a sus ejemplos de plantilla y estudio en el sitio web.

0

Depende si usa el autoservicio o el adaptador. Si es necesario, debe modificar la plantilla para que establezca el indicador en lugar de eliminar la entidad.

Si es un adaptador, puede heredar de DataAccessAdapter y anular los métodos de eliminación para establecer el indicador en lugar de eliminar las entidades.

En general, es una solución horrible para el rendimiento, ya que cada consulta necesita filtrar entidades "eliminadas" y porque la selectividad en la columna "borrado" no será muy alta (todos sus registros "no cargados" son null - supongo que será la mayoría de ellos) indexarlo no te beneficiará mucho - terminarás con muchos escaneos de tabla.

Cuestiones relacionadas