2009-07-04 7 views
2

in der aktuellen Anwendung im arbeiten auf dem Client angefordert, dass wir die Geschichte von jeder Aktion im System gespeichert und bieten die Möglichkeit, den vorherigen Zustand wiederherzustellen die Information.Umgang Geschichte/Change-Tracking in der DB und Auswirkungen auf die BL

zum Beispiel: sagen wir mal, dass meine App kann behandeln müssen einen Speicherraum und jeder Benutzer hinzufügen/update/delete/lesen (alle CRUD) das Inventar

, wenn der Benutzer Produkt P1 mit Wirkung A1 hinzugefügt und aktualisiert seine Informationen, so wird es P2 mit Aktion A2 und später P3, P4 und so weiter. In der Anwendung wird dem Benutzer ein Bildschirm angezeigt, auf dem die gesamte Entwicklung des Produkts angezeigt wird. Auf dem Bildschirm werden alle Aktionen angezeigt, die von den Benutzern ausgeführt wurden. kann der Benutzer eine bestimmte Aktion auswählen und "rückgängig machen".

auf den ersten Blick dachte ich, dass ich eine Art von Actions-Tabelle mit allen Informationen, die ich brauche über die Aktion speichern und wenn ich rückgängig machen und Aktion muss ich nur die Änderungen im Code.

Mein Problem ist: Wenn das Produkt nicht in einer Tabelle gespeichert ist, sondern in ein paar Tabellen aufgeteilt ist (wegen Optimierung/Verständlichkeit usw.), muss ich herausfinden, wo genau die Änderungen waren.

sollte ich einen Hinweis in der Tabelle Actions behalten, welche Tabellen beeinflusst wurden und es an die BL ???

mir scheint, dass es muss

Antwort

0

vielleicht mit einem spezielleren Aktion eine bessere Lösung sein, so dass die Anwendung genau wissen, was todo

Logik tun sie nicht setzen auf der DB

1

Ich habe Somthing einmal und um Änderungen rückgängig machen zu können, müssen Sie das Feld im Auge behalten, das sich ändert.

Es spielt keine Rolle, wo diese Felder liegen, solange Sie wissen, wo dieses Feld platziert wurde. So können Sie in Ihrem BL eine Art Hilfsklasse machen, die "weiß", wo jedes Feld platziert ist und es der rechten Tabelle zuordnen -> Spalte in DB. Dadurch werden die Strings und andere DB-Elemente in Ihrem BL reduziert.

Einfach diese Hilfsklasse in DAL setzen.

Wenn Sie Änderungen sehen (und/oder sie zurückkommen) Frage zu DAL senden ...

Durch die Art und Weise in MS-SQL 2008 wird aussehen Änderung Einbau-Tracking so können Sie es verwenden, um für Änderungen. - Change Tracking