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 il routing HTTP in Azure Container App
Mischiare codice server side e client side in una query LINQ con Entity Framework
Mappare una complex property di una entity su un campo JSON
Esporre un server MCP con Azure API Management
Generare una User Delegation SAS in .NET per Azure Blob Storage
Creare un agente A2Acon Azure Logic Apps
Gestire trasferimenti cloud con Azure Storage Mover
Utilizzare Locust con Azure Load Testing
Loggare le query più lente con Entity Framework
Gestione opzioni colonna nella Blazor QuickGrid
Anonimizzare i dati sensibili nei log di Azure Front Door
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Le DirectInk API nella Universal Windows Platform
- Gli oggetti CallOut di Expression Blend 4.0
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Sfruttare una CDN con i bundle di ASP.NET


