Ver código SQL gerado pelo Entity Framework

Uma dica rápida,  sabia que é possível ver o código SQL que será executado no banco de dados de uma consulta feita com LINQ to Entities? É uma excelente forma de poder ver o que irá acontecer, ver se sua query em LINQ é realmente o que você quer e, em caso de erros, conseguir realizar mais facilmente um trace da aplicação sem ter de recorrer a opções como um Profiler no servidor SQL.

Segue na Listagem 1 uma consulta simples a uma base que já foi mostrada aqui em outro artigo:


exampleEntities ex = new exampleEntities();

var query = from c in ex.Pessoa.OfType()
 select c;

Listagem 1. Consulta em LINQ to Entities

O segredo para converter esta consulta em LINQ para SQL está na classe ObjectQuery do namesapce System.Data.Objects. A Listagem 2 mostra como converter a sua consulta em Object Query e obter a consulta SQL.


ObjectQuery oQuery = (ObjectQuery)query;
 string cmdSQL = oQuery.ToTraceString();

Listagem 2.  Mostrando a consulta SQL

e como resultado temos a consulta mostrada na Listagem 3


SELECT
'0X0X' AS [C1],
[Extent1].[Id] AS [Id],
[Extent1].[Nome] AS [Nome],
[Extent2].[CPF] AS [CPF],
[Extent2].[Data_Nascimento] AS [Data_Nascimento]
FROM  [dbo].[Pessoa] AS [Extent1]
INNER JOIN [dbo].[Pessoa_PessoaFisica] AS [Extent2] ON [Extent1].[Id] = [Extent2].[Id]

Listagem 3.  Código SQL que será executado

Esse post foi publicado em LINQ. Bookmark o link permanente.

Deixe um comentário