Frage

ich nicht wirklich wusste, wie der Titel zu formulieren. Aber das ist mein Problem. Wir verwenden SqlCacheDependencies Cache-Objekte zu aktualisieren aus. Aber die Abfrage dahinter ist „kompliziert“, dass wir es etwas leichter machen möchten.

Unser erster Gedanke war ein Feldname wie DateChanged hinzuzufügen und die DateChanged verwenden um zu überprüfen, ob ein Objekt anstatt tatsächlich geändert hat alle Spalten einer Tabelle geladen werden.

SELECT DateChanged FROM Table1

anstelle von

SELECT Id, Title, DateChanged, Description FROM Table1

Aber ich habe gehofft, jemand könnte mir sagen, ob es andere Möglichkeiten gibt, dies zu tun, oder wenn es Standards für die Spalte zu benennen, die eine Änderung anzeigt. Wie sind Frameworks wie "Entity Framework" oder "NHibernate" dies umgehen?

War es hilfreich?

Lösung

Es wird in der Regel als "Zeitstempel"

dh in

Andere Tipps

Dies sind die Spalten I auf "überprüfbare" Entitäten verwenden:

version: hibernate's optimistic concurrency control
createdBy: FK to users
modifiedBy: FK to users
createdAt: timestamp
modifiedAt: timestamp

Wenn Sie auf SQL Server beachten Sie eine Timestamp-Spalte ist etwas irreführend genannt. Während es verwendet werden kann, Änderungen an eine Spalte zu verfolgen, hat sein Wert nichts mit dem Datum oder Zeit zu tun. Es kann mehr in der Datenbank, nichts als ID uniqiue gedacht werden. http://msdn.microsoft.com/en-us/library/aa260631. aspx

Um zu wissen, ob ein Wechsel zwei timstamps müssen gefunden hat, wie in cherouvim Antwort. Man wird gesetzt, wenn ein Objekt erstellt wird, die andere auf einer Änderung, wahrscheinlich über Update-Trigger. Wenn sie sich unterscheiden, dann hat das Objekt editiert, aber man kann nicht genau sagen, wann.

Auf SQL Server haben Sie das gleiche Muster verwenden, aber mit Datums-Werten. Anschließend können Sie das Datum der Zeile berechnen, indem das Erstellungsdatum vom mod Datum subtrahiert wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top