Molto spesso capita di voler loggare le operazioni di modifica al database per motivi di storicizzazione. Quando non si può centralizzare questa logica in una stored procedure, il modo migliore è ricorrere all'override del metodo SaveChanges della classe ObjectContext. In questo modo possiamo intercettare il momento in cui Entity Framework persiste le modifiche fatte agli oggetti ed agganciare la logica di logging.
Il primo passo consiste nel creare una classe che erediti da ObjectContext. Il secondo passo consiste nel fare l'override del metodo SaveChanges come nel seguente esempio.
public override int SaveChanges(SaveOptions options) { DetectChanges(); var result = base.SaveChanges(SaveOptions.None); //codice di logging AcceptAllChanges(); return result; }
Il metodo SaveChanges della classe base viene invocato passando SaveOptions.None così che quando il codice torna nel nostro metodo, lo stato delle entità non è impostato su Unchanged e possiamo così effettuare il log.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare Azure AI Studio per testare i modelli AI
Migrare una service connection a workload identity federation in Azure DevOps
Filtering sulle colonne in una QuickGrid di Blazor
Migliorare l'organizzazione delle risorse con Azure Policy
Filtrare i dati di una QuickGrid in Blazor con una drop down list
Eseguire una query su SQL Azure tramite un workflow di GitHub
Sfruttare al massimo i topic space di Event Grid MQTT
.NET Conference Italia 2024
Sfruttare MQTT in cloud e in edge con Azure Event Grid
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Gestire domini wildcard in Azure Container Apps
Utilizzare un service principal per accedere a Azure Container Registry