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
Pubblicare un MCP Server in GitHub MCP Registry
Testare il failover sulle region in Azure Storage
Creare agenti facilmente con Azure AI Agent Service
Implementare il throttle in JavaScript
Recuperare gli audit log in Azure DevOps
Creare un agente A2Acon Azure Logic Apps
Supportare la crittografia di ASP.NET Core con Azure Container App
Utilizzare Hybrid Cache in .NET 9
Ridimensionamento automatico input tramite CSS
Importare un servizio esterno in .NET Aspire
Escludere alcuni file da GitHub Copilot
Gestire pubblicazione Kubernetes tramite .NET Aspire
I più letti di oggi
- Effettuare il multi-checkout in linea nelle pipeline di Azure DevOps
- Esaminare documenti XML con namespace utilizzando LINQ to XML
- Alleggerire le applicazioni WPF sfruttando gli oggetti Freezable
- Le DirectInk API nella Universal Windows Platform
- Sfruttare una CDN con i bundle di ASP.NET
- Effetto turnstile su tutte le pagine con il Windows Phone Toolkit
- Gli oggetti CallOut di Expression Blend 4.0


