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 l'operatore GroupBy come ultima istruzione di una query LINQ in Entity Framework
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Cambiare la chiave di partizionamento di Azure Cosmos DB
Elencare le container images installate in un cluster di Kubernetes
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Eseguire attività pianificate con Azure Container Jobs
Migrare una service connection a workload identity federation in Azure DevOps
Utilizzare la session affinity con Azure Container Apps
Accesso sicuro ai secrets attraverso i file in Azure Container Apps
Short-circuiting della Pipeline in ASP.NET Core
What's new in Azure Functions and Extensions
Migliora la resilienza delle applicazioni con .NET e Azure Container Apps
I più letti di oggi
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- Utilizzare il trigger SQL con le Azure Function
- Disabilitare automaticamente un workflow di GitHub (parte 2)
- Ottimizzazione dei block template in Angular 17
- Paginare i risultati con QuickGrid in Blazor
- Ed infine anche il calendario :)
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!