Una delle mancanze di Entity Framework Core, fino alla versione 2.2, rispetto a Entity Framework 6 è l'impossibilità di intercettare l'esecuzione di comandi SQL: interception. Con Entity Framework 3 è stata aggiunta questa funzionalità che ci permette quindi di eseguire operazioni subito prima e subito dopo l'esecuzione di un comando SQL.
Questa funzionalità torna molto utile quando dobbiamo personalizzare la stringa di connessione (come vedremo in un prossimo script), quando dobbiamo misurare i tempi di esecuzione di un comando o anche quando vogliamo bypassare l'esecuzione di una query o modificarne il testo.
Per creare un interceptor che agisca prima e dopo l'esecuzione di un comando SQL, dobbiamo creare una classe che eredita da DbCommandInterceptor ed eseguire l'override di uno dei metodi di lettura come ReaderExecuting, ReaderExecuted, NonQueryExecuting, NonQueryExecuted, CommandCreated solo per nominarne alcuni.
Prendiamo come esempio il metodo ReaderExecuting.
public class MyCommandInterceptor : DbCommandInterceptor { public override InterceptionResult ReaderExecuting( DbCommand command, CommandEventData eventData, InterceptionResult result) { Console.WriteLine("ExecutingQuery: command.CommandText") return result; } }
In questo caso stiamo semplicemente loggando una chiamata al database scrivendo a console il codice SQL, ma possiamo eseguire qualunque operazione di cui abbiamo bisogno.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Eseguire attività con Azure Container Jobs
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Personalizzare l'errore del rate limiting middleware in ASP.NET Core
Ottimizzazione dei block template in Angular 17
Utilizzare Tailwind CSS all'interno di React: installazione
Sfruttare al massimo i topic space di Event Grid MQTT
Effettuare il binding di date in Blazor
Utilizzare gli snapshot con Azure File shares
Usare Refit e Polly in Blazor per creare client affidabili e fortemente tipizzati
Implementare l'infinite scroll con QuickGrid in Blazor Server
Utilizzare la libreria Benchmark.NET per misurare le performance
Reactive form tipizzati con FormBuilder in Angular
I più letti di oggi
- Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
- ASP.NET 3.5 per tutti
- .NET Conference Italia 2023 - Milano e Online
- Utilizzare Docker Compose con Azure App Service
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!