Entity Framework: Einstellen des Aktualisierungszeitstempels

entity-framework

Frage

Alle unsere Datenbanktabellen haben UpdateUserID und UpdateTS. Ich möchte dieses Set haben, wenn sich meine Entität geändert hat. Gibt es eine Möglichkeit, dieses Update vor Ort bedingt zu haben?

Wenn ich UpdateTS manuell im Code einstelle, heißt das, dass sich meine Entität geändert hat und das Objekt immer aktualisiert wird.

Akzeptierte Antwort

Sie sollten in der Lage sein, mit dem SavingChanges-Ereignis ( Beispiel hier ) umzugehen und eine von @sander beschriebene Logik auszuführen


Beliebte Antwort

Ich rufe diese Erweiterungsmethode vor dem Aufruf von context.SaveChanges() :

public static void SetLastModified(this ObjectContext context, DateTime dateTime)
{
    DateTime now = DateTime.UtcNow;
    foreach (ObjectStateEntry entry in context.ObjectStateManager.GetObjectStateEntries(EntityState.Modified))
    {
        if (!entry.IsRelationship)
        {
            IHasLastModified lastModified = entry.Entity as IHasLastModified;
            if (lastModified != null)
                lastModified.LastModified = now;
        }
    }
}

Ich kann diesen Code problemlos aufrufen, da ich den ObjectContext in eine Repository-Klasse einwickeln kann. Wenn Sie es nicht verwenden, können Sie das ObjectContext.SavingChanges , um etwas Ähnliches ObjectContext.SavingChanges .



Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum
Lizenziert unter: CC-BY-SA with attribution
Nicht verbunden mit Stack Overflow
Ist diese KB legal? Ja, lerne warum