Ich untersuche Entity Framework 6.1.1 mit SQL Server 2008 R2.Entity Framework 6 (Code zuerst) Versionierung und Auditing von Entitäten
Momentan erstelle ich meine Modelle und Datenbanken mit der Code-First EF-Funktion. Mein grundlegender Anwendungsfall ist das Erstellen eines Journals aller Änderungen an einer bestimmten Entität (ID
ist die Schlüsselspalte), um Auditoren dabei zu helfen, alle vorgenommenen Änderungen zu verfolgen. Beispiel:
|ID|Version|Created Date|Created By|Modified Date|Modified By|Modify Action| ... (rest of entity fields)
-------------------------------------------------------------------------------------------------------
| 4| 12 | 12-Mar-14 | tom | 20-Feb-15 | jack | Update |
| 4| 11 | 12-Mar-14 | tom | 14-Feb-15 | jill | Update |
| 4| 1 | 12-Mar-14 | tom | 12-Mar-14 | tom | Create |
Unterstützt Entity Framework diese Art von Datenbankschema? Wenn ja, wie kann ich meine Modelle/Lösung einstellen, um dies zu erleichtern?
Die andere Alternative, die ich habe, ist durch alle Anrufe an die SaveChanges()
Methode auf den DbContext
Abfangen und melden Sie sich alle Datenbankänderungen in eine separate Audit
Tabelle, aber dies könnte Abrufen von Informationen schwieriger machen.
Jede Hilfe beim Erstellen von Audit-Trails mit SQL Server und EF 6 wird sehr geschätzt.
public class MyContext : DbContext
{
public int SaveChanges(int userId)
{
// Get all Added/Deleted/Modified entities (not Unmodified or Detached)
foreach (var ent in this.ChangeTracker.Entries().Where(p => p.State == EntityState.Added
|| p.State == EntityState.Deleted || p.State == EntityState.Modified))
{
foreach (AuditLog x in GetAuditRecordsForChange(ent, userId))
{
this.AuditLogs.Add(x);
}
}
return base.SaveChanges();
}
...
Also, wenn ich ein bestimmtes Unternehmen, ich nenne nur die überladene Savechanges & Pass in einer Benutzer-ID anmelden möchten:
möglich Duplikat [Implementierung von Audit-Log/Änderungsprotokoll mit MVC & Entity Framework] (http://stackoverflow.com/questions/6867459/implementing-audit-log-change-history- with-mvc-entity-framework) –
Das kann Sie vielleicht auf den Weg bringen: http://auditdbcontext.codeplex.com/ –
Ich hatte eher gehofft, Entity-Versionen zu haben, da dies mit anderen Datenbankanwendungen konsistent ist. Die Versionsverwaltung wird derzeit von Monster-T-SQL-Funktionen gesteuert, die ich nicht implementieren möchte, insbesondere mit EF! –