Neste post irei mostrar como monitorar todos os SQL gerados pelo entity framework, no output do visual studio.
Isto é algo importante, principalmente onde há consultas mais complexas que podem afetar o desempenho da aplicação.
O processo para visualizar os SQLs gerados no output do Visual Studio é bem simples, é apenas uma linha de codigo, no construtor da(s) classe(s) que herdem de DBContext:
Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
A propriedade Log
é um delegate do tipo Action<string>
(Delegate: elemento que permite que você faça referencia a um método, parecido com ponteiros de funções) este delegate não retorna nada e espera um argumento s do tipo string.
Obs: Caso queira, você pode gravar estes comandos em arquivos para logs futuros.
Algo que uso também é colocar um if antes da instrução, para que o comando seja executado apenas em modo Debug:
#if DEBUG
Database.Log = s => System.Diagnostics.Debug.WriteLine(s);
#endif
Delegates: C# - Delegates e Eventos : Conceitos básicos
Delegate Action: C# - O Delegate Action