2009-06-03 6 views
0

Ich kenne viele Tabellenprüfungsmethoden. Einige basieren auf Triggern und erfordern Trigger für jede zu auditierende Tabelle. SOme haben Beschränkung auf Spalten Datentyp. Wie kann ich ein Logging-Framework wie NLog oder Log4Net verwenden? Ich möchte, dass mein Protokoll (in einer Tabelle) die Frage beantwortet "Wer hat diese Spalte dieser Tabelle zu diesem Zeitpunkt von val0 auf val1 aktualisiert?"Wie kann NLog/Log4Net zur Automatisierung der Datenbankänderung verwendet werden?

Ich habe mich noch nicht für einen OR-Mapper entschieden. Neigung zu NHibernate oder EF.

Vielen Dank im Voraus!

Antwort

2

Wenn Sie ein Muster wie DAO verwenden (ich verwende es erfolgreich in Java mit Hibernate), können Sie einen Eintrag für jede Änderung in der Datenbank hinzufügen. Wenn Sie Spring.NET verwenden, können Sie AOP zum Hinzufügen von Interzeptoren zu den Methoden der DAOs verwenden, die auf die Datenbank zugreifen.

Wie auch immer, möchten Sie vielleicht einen speziellen Appender für das DAO-Paket hinzufügen, weil es sehr ausführlich wäre.

+0

geneigt in Richtung Postsharp..aber AOP klingt eine gute Option – Perpetualcoder

1

Victors Antwort ist erstklassig, aber ich wollte hinzufügen, dass dies schwierig sein kann, abhängig davon, wie Ihre Spalten-> Objekt-Zuordnungen funktionieren.

Wenn Sie Ihre Tabellenspalten zu Objekteigenschaften und Feldern mit unterschiedlichen Namen zuordnen, dann werden Sie versuchen, SQL-Informationen zu analysieren, um festzustellen, welche Spalte aktualisiert wurde. Wenn Sie zum Beispiel den Wert von "Product.Price" geändert haben und dieser tatsächlich auf eine Spalte mit dem Namen "final_price" verweist, stimmt Ihre Protokollierung nicht genau mit dem überein, was in der Datenbank passiert.

Auch das könnte falsch sein, aber wenn Sie mit getrennten Einheiten über ein ORM-Paket arbeiten, bin ich mir nicht sicher, ob Änderungsverfolgungsinformationen verfügbar sein werden. Ich erinnere mich vage an ein Problem, das ich darüber gelesen habe, wo eines der ORMs, die Sie aufgelistet haben, jede Spalte aktualisiert hat, so dass ein Benutzer alle Spalten in der Tabelle änderte, als sie wirklich eine einzelne Spalte aktualisierten.

Verwandte Themen