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
Gestione dell'annidamento delle regole dei layer in CSS
Gestione degli eventi nei Web component HTML
Sfruttare gli embedding e la ricerca vettoriale con Azure SQL Database
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub
Persistere la ChatHistory di Semantic Kernel in ASP.NET Core Web API per GPT
Configurare e gestire sidecar container in Azure App Service
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Configurare lo startup di applicazioni server e client con .NET Aspire
Fornire parametri ad un Web component HTML
Fissare una versione dell'agent nelle pipeline di Azure DevOps
Utilizzare DeepSeek R1 con Azure AI
Montare Azure Blob Storage su Linux con BlobFuse2
I più letti di oggi
- Gestione CSS in Blazor con .NET 9
- Documentare i servizi REST con Swagger e OpenAPI con .NET 9
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- .NET Conference Italia 2024 - Milano
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!