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
Gestire gli accessi con Token su Azure Container Registry
Testare il failover sulle region in Azure Storage
Configurare e gestire sidecar container in Azure App Service
Centralizzare gli endpoint AI Foundry con Azure API Management
Creare agenti facilmente con Azure AI Agent Service
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Loggare le query più lente con Entity Framework
Supportare la crittografia di ASP.NET Core con Azure Container App
Creare espressioni riutilizzabili nelle query LINQ per Entity Framework
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Eseguire query in contemporanea con EF


