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
Usare le collection expression per inizializzare una lista di oggetti in C#
Esportare ed analizzare le issue di GitHub con la CLI e GraphQL
Elencare le container images installate in un cluster di Kubernetes
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Gestire i null nelle reactive form tipizzate di Angular
Paginare i risultati con QuickGrid in Blazor
Sfruttare al massimo i topic space di Event Grid MQTT
Utilizzare Tailwind CSS all'interno di React: primi componenti
Disabilitare automaticamente un workflow di GitHub (parte 2)
Eseguire query manipolando liste di tipi semplici con Entity Framework Core
Cambiare la chiave di partizionamento di Azure Cosmos DB
Utilizzare la libreria Benchmark.NET per misurare le performance
I più letti di oggi
- Riordinare le righe di una GridView di ASP.NET con jQuery
- Creazione di un alarm con suono personalizzato con Windows Phone 7.1
- Utilizzare la session affinity con Azure Container Apps
- Blue-green deployment con Azure Web App e DevOps
- Ed infine anche il calendario :)
- Configurare la diagnostica di Azure attraverso Visual Studio
- Recuperare la data di creazione di un tag tramite una pipeline YAML di Azure DevOps
- Microsoft Security Bulletin MS05-002
- .NET Core e dispositivi IoT
- Eseguire attività pianificate con Azure Container Jobs