Ich habe mein Kernprojekt in C#.Entity Framework 6: Audit/Track-Änderungen
Ich arbeite an einer Datenbank, wo einige Tabellen die Spalten "user_mod" und "date_mod" für sign haben, wer und wann einige Mods gemacht und das gleiche mit "data_new" und "user_new".
Meine Frage: Gibt es eine Möglichkeit, dies zu zentralisieren und diese Daten automatisch einfügen, wo ich die Instanz dbContext
erstellen?
Wenn nicht, werde ich ein Audit-Trail-Tool verwenden. Ich habe einige davon gesehen, aber es gibt ein Problem: all diese Dinge erfordern Code in meinem Modell. Aber ich möchte nicht in mein Modell schreiben, denn wenn ich es ändern muss, werde ich die Mods verlieren. Ist es möglich, einen Audit-Trail für EF6 zu verwenden, ohne die Modelldatei (en) zu schreiben? Wie?
EDIT:
Mein Versuch, den savechanges außer Kraft zu setzen.
public partial class PieEntities : DbContext
{
public override int SaveChanges(System.Data.Objects.SaveOptions options)
{
var timestamp = DateTime.Now;
EntityState es = EntityState.Added;
ObjectStateManager o = new ObjectStateManager();
foreach (ObjectStateEntry entry in o.GetObjectStateEntries(EntityState.Added)) {
if (entry.Entity.GetType() == typeof(TabImpianti)) {
TabImpianti impianto = entry.Entity as TabImpianti;
impianto.DATA_INS = timestamp;
impianto.DATA_MOD = timestamp;
string u = mdlImpostazioni.p.UserName;
impianto.USER_INS = u;
impianto.USER_MOD = u;
}
}
return base.SaveChanges(options);
}
}
UPDATE: Ich habe die solution here zusammengefasst.
möglich Duplikat [Entity Framework DbContext Savechanges() Originalvalue Falsche] (http://stackoverflow.com/ Fragen/9588352/entity-framework-dbcontext-savechanges-originalvalue-incorrect). Es gibt viel mehr Anstrengungen in diesem Bereich. Suchen Sie nach Entity Framework + Auditing. –
@GertArnold warum? Ich denke nicht. Außerdem handelt es sich um EF4, zwei ältere Versionen von mir. –
Nun, ich habe eine zufällige aus einer langen Liste von Treffern ausgewählt, wenn ich StackOverflow zu diesem Thema suche. Es geht normalerweise um das Überschreiben von 'SaveChanges', was in EF4 gleich ist.In EF6 kannst du etwas im Bereich der Kommando-Baum-Abfangjäger wagen, aber ich bin mir nicht sicher, wohin dich das bringen wird. –