2008-09-25 5 views
5

J'ai hérité d'un projet utilisant LLBLGen Pro pour la couche DB. Le modèle de base de données requiert que, lorsqu'une entrée est supprimée, un indicateur (DeletedDate est défini sur l'heure actuelle). Le dernier programmeur a ignoré cette exigence et a utilisé des suppressions régulières dans toute l'application.LLBLGen: Comment puis-je supprimer une entrée logicielle?

Existe-t-il un moyen de configurer automatiquement le générateur de code ou dois-je surcharger chaque opérateur de suppression pour les entités qui le nécessitent?

Répondre

4

J'ai implémenté cela dans SQL Server 2005 en utilisant les déclencheurs INSTEAD OF lors de la suppression pour toute table de suppression logicielle. Les déclencheurs définissent l'indicateur de suppression et effectuent le nettoyage. La beauté de cette solution est qu'elle gère correctement les suppressions émises par tout système accédant à la base de données. INSTEAD OF est relativement nouveau dans SQL Server, je sais qu'il existe un équivalent Oracle.

Cette solution est également compatible avec notre mappeur O/R: j'ai créé des vues qui filtrent les enregistrements supprimés et mappés. Les vues sont également utilisées pour tous les rapports.

+1

Suggestion très cool - il semble que ce serait utile quel que soit le choix spécifique d'ORM ou d'une autre stratégie DAL. –

2

Vous pouvez créer une tâche personnalisée dans LLBLGen qui remplacerait celles qui vous sont destinées lorsque vous générez des entités. Découvrez leurs exemples de modèles et de modèles de modèles sur le site Web.

0

Cela dépend si vous utilisez le libre-service ou un adaptateur. Si SS vous devrez modifier le modèle afin qu'il définisse le drapeau pour vous plutôt que de supprimer l'entité.

Si adaptateur, vous pouvez hériter de DataAccessAdapter et remplacer les méthodes de suppression pour définir l'indicateur pour vous plutôt que de supprimer les entités. Il s'agit généralement d'une solution pour la performance, car chaque requête doit filtrer les entités "supprimées" - et parce que la sélectivité de la colonne "supprimée" ne sera pas très élevée (tous vos enregistrements "non-fondés" sont null - je suppose que ce sera la majorité d'entre eux) indexer cela ne vous rapportera pas grand-chose - vous finirez avec beaucoup d'analyses de table.

Questions connexes