Dies ist nur eine zufällige Idee, über die ich mich wunderte. Gibt es ORMs oder Datenbanken, die den Tracking-Verlauf nativ unterstützen? Ich stelle mir etwas vor, wo jede Zeile einen zusammengesetzten Primärschlüssel mit einer ID und einer Version hat. Ein Update würde eine neue Zeile mit der gleichen ID und der nächsten verfügbaren Versionsnummer "anhängen". Eine normale Auswahl gibt nur die aktuellste Version einer eindeutig identifizierten Zeile zurück, aber "SelectHistory" würde alle Zeilen zurückgeben. Löschen wäre nativ ein Soft-Delete.ORM oder Datenbank, die wie Versionskontrolle funktioniert und verfolgt Geschichte
Da dies kein neues Problem ist und dass es nichts Neues unter der Sonne gibt, ist mir aufgefallen, dass es eine hohe Wahrscheinlichkeit gibt, dass jemand bereits eine elegante Lösung entworfen hat, die die harten Teile davon abstrahiert und das könnte entweder auf der Datenbankschicht oder der ORM-Schicht durchgeführt werden.
Ich habe eine bestehende Anwendung, die auf Entity Framework aufgebaut ist. Sie überschreibt die SaveChanges-Methode des DbContext, um für jede neue/geänderte Entität die Eigenschaften CreatedBy/CreatedDate/ModifiedBy/ModifiedDate festzulegen. Der Client hat kürzlich gefragt, wie viel Arbeit erforderlich wäre, um die vollständige Verlaufsverfolgung hinzuzufügen. Ich habe ihnen basierend auf früheren Erfahrungen mit ähnlichen Systemen eine angemessene Schätzung gegeben. Meine Schätzung umfasste das Hinzufügen zusätzlicher Entitäten zur Logik des Modells und der Business-Schicht, um diese Entitäten zu füllen. Der Kunde beschloss, diese Arbeit nicht weiter zu verfolgen, aber es brachte mich dazu, mich zu fragen, ob es einen besseren Weg gab. Gibt es eine bessere Lösung mit Entity Framework? Gibt es bessere Lösungen mit anderen Architekturen?
Ich nahm einen anderen Ansatz für die Versionierung unserer Wordpress-Datenbanken. Was ich getan habe, war ein nächtlicher mysqladmin-Dump in ein versioniertes Arbeitsverzeichnis. Nachdem der Speicherauszug fertig war, würde ich einfach die Änderungen bestätigen. – B2K