Entity Framework 7 SaveChanges

entity-framework-core

Domanda

C'è un modo per registrare un callback che verrà chiamato prima che un modello in EF7 venga salvato nel database? Quello che voglio fare è impostare una proprietà ModifiedBy e ModifiedDate che ho su tutti i modelli. Non sono così ansioso di farlo manualmente prima di ogni salvataggio, quindi sto cercando un modo più generico e automatico.

Risposta accettata

ChangeTracker.Entries() ti consente di ottenere tutte le modifiche all'entità. È possibile sovrascrivere SaveChanges in DbContext e impostare le proprietà modificate utilizzando qualcosa come il seguente codice.

public override int SaveChanges()
{
    SetModifiedInformation();
    return base.SaveChanges();
}

public override async Task<int> SaveChangesAsync( CancellationToken cancellationToken = new CancellationToken() )
{
    SetModifiedInformation();
    return await base.SaveChangesAsync( cancellationToken );
}

private void SetModifiedInformation()
{
    foreach (var entityEntry in ChangeTracker.Entries())
    {
        var entity = entityEntry.Entity as ChangeTracking;
        if (entity != null)
        {
            entity.ModifiedBy = "Get User Here";
            entity.ModifiedTime = DateTime.Now;
        }
    }
}



Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché
Autorizzato sotto: CC-BY-SA with attribution
Non affiliato con Stack Overflow
È legale questo KB? Sì, impara il perché