Comment utiliser NLog / Log4Net pour automatiser le suivi des modifications de base de données?

StackOverflow https://stackoverflow.com/questions/946796

Question

Je suis au courant de nombreuses méthodes d'audit de table. Certains sont déclencheur et qui requièrent des déclencheurs sur chaque table à auditer. Certains ont la limitation basée sur la colonne type de données. Comment puis-je utiliser un cadre de l'exploitation forestière comme NLog ou Log4Net. Je veux que mon journal (dans un tableau) pour répondre à la question « Qui a mis à jour cette colonne de ce tableau de val0 à val1 à ce moment? »

Je ne l'ai pas décidé sur un OU mappeur encore. Vers ou NHibernate d'inclinaison EF.

Merci d'avance!

Était-ce utile?

La solution

Si vous utilisez un modèle comme DAO (je l'utilise avec succès en Java avec Hibernate) vous pouvez ajouter une entrée pour chaque changement de la base de données. Si vous utilisez Spring.NET vous pouvez utiliser AOP pour ajouter des intercepteurs aux méthodes des OAC accédant à la base de données.

Quoi qu'il en soit, vous voudrez peut-être ajouter un appender spécial pour le paquet OTI parce qu'il serait très bavard.

Autres conseils

Victors réponse est top, mais je voulais ajouter que cela peut être difficile en fonction de la façon dont votre par colonnes> correspondances d'objet travail.

Si votre correspondance de vos colonnes de table pour les propriétés d'objet et les champs avec des noms différents alors je pense que vous allez regarder en essayant d'analyser les informations SQL pour déterminer la colonne a été mise à jour. Par exemple, si votre changé la valeur de « product.price » et que les cartes effectivement à une colonne nommée « final_price » votre exploitation forestière ne correspond pas exactement à ce qu'il se passe dans la base de données.

Aussi cela pourrait se tromper, mais si votre travail avec des entités déconnectées par un paquet ORM Je ne sais pas si sera disponible les informations de suivi du changement. Je me rappelle vaguement un problème que je lis sur l'endroit où l'un des ORM que vous avez énumérés ont été mise à jour chaque colonne il est apparu un utilisateur a changé toutes les colonnes de la table quand ils ont vraiment mis à jour une seule colonne.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top