Il metodo SaveChanges della classe DbContext è virtuale e quindi possiamo eseguirne l'override nella classe di contesto che creiamo nei nostri progetti. Grazie a questa caratteristica possiamo eseguire operazioni prima e dopo l'effettiva persistenza dei dati sul database.
Un tipico esempio in cui questa funzionalità torna utile è quando vogiamo ripulire le stringhe inserite dall'utente da caratteri speciali prima che questi vengano persistiti. Il seguente esempio mostra come sfruttare il metodo SaveChanges per raggiungere tale scopo.
public override int SaveChanges() { var entries = this.ChangeTracker.Entries().Where( c => c.State == EntityState.Added || c.State == EntityState.Modified); foreach (var entry in entries) { foreach (var propertyName in entry.CurrentValues.PropertyNames) { var property = entry.Property(propertyName); if (property.IsModified && property.CurrentValue is string) { string r = "[\x00-\x08\x0B\x0C\x0E-\x1F]"; property.CurrentValue = Regex.Replace( property.CurrentValue.ToString(), r, "", RegexOptions.Compiled); } } } return base.SaveChanges(); }
Prima che si esegua la persistenza, vengono recuperate tutte le entry nel DbContext che devono essere modificate o aggiunte sul database. Per ogni entry si scorrono le proprietà. Su quelle che sono di tipo stringa e modificate viene eseguita una regular expression per eliminare i valori non consentiti. Alla fine si invoca il l'implementazione di base di SaveChanges per eseguire la persistenza.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Triggerare una pipeline su un altro repository di Azure DevOps
Generare una User Delegation SAS in .NET per Azure Blob Storage
Testare l'invio dei messaggi con Event Hubs Data Explorer
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Eliminare record doppi in Sql Server
Gestire il routing HTTP in Azure Container App
Introduzione alle Container Queries
Supportare la crittografia di ASP.NET Core con Azure Container App
Simulare Azure Cosmos DB in locale con Docker
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Ricevere notifiche sui test con Azure Load Testing
Loggare le query più lente con Entity Framework
I più letti di oggi
- .NET Conference Italia 2025 - Milano
- The Agentic Day - Milano
- Usare i settings di serializzazione/deserializzazione di System.Text.Json di ASP.NET all'interno di un'applicazione non web
- Gestione ciclo di vita in .NET Aspire
- Assengare l'ID ai controlli in maniera automatica
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!