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
Controllare la velocità di spostamento su una pagina HTML
Montare Azure Blob Storage su Linux con BlobFuse2
La gestione della riconnessione al server di Blazor in .NET 9
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare l nesting nativo dei CSS
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Centralizzare gli endpoint AI Foundry con Azure API Management
Controllare la telemetria con .NET Aspire
Gestire il routing HTTP in Azure Container App
Gestire progetti NPM in .NET Aspire
Utilizzare Container Queries nominali
Configurare OpenAI in .NET Aspire
I più letti di oggi
- Community Night@Basta!Italia 2010 - Roma
- Visual Studio 2010 e .NET Framework 4.0: beta 2 e data di release RTM
- Windows 8 su ARM: avrà il desktop, Office e il connected standby
- Anche Entity Framework 6 abbraccia l'Open Source: sarà distribuito con licenza Apache 2.0
- Disponibile la versione 2.1 di IISLockDown
- Windows Server 2003: 300% in più in tre mesi
- ASP to ASP.NET Migration Roadshow in 11 città
- Disponibilie VS 2005 ed ASP.NET 2.0 beta 2 su MSDN
- In arrivo una nuova versione di ATLAS
- Nasce il DLR: il .NET Framework 3.5 supporta i linguaggi dinamici


