jueves, 22 de marzo de 2012

Depurando las consultas SQL generadas por Entity Framework

Muchas veces, sobre todo en consultas complejas Entity Framework puede no devolvernos los datos que esperábamos. Normalmente cuando esto ocurre suelo recurrir al SQL Server Profiler, pero no siempre lo tengo disponible ya que es una funcionalidad que no está presente en la versión Express del SQL Server. Pero como siempre, los chicos de Microsoft han pensado en todo y hay una forma bastante simple de obtener la consulta que ha generado el Entity Framework para poder jugar con ella y ver donde está el fallo.
using (FooEntities entities = new FooEntities())
{
 var result = (from p in entities.Bar
   where p.IdBar.Equals(1001)
   select p);

 System.Diagnostics.Trace.Write(string.Format("SQL: {0}", ((System.Data.Objects.ObjectQuery)result).ToTraceString()));    
}
Esto nos devolverá en nuestra ventana de Resultados lo siguiente
SQL: SELECT 
[Extent1].[IdBar] AS [IdBar], 
[Extent1].[BarDesc] AS [BarDesc], 
[Extent1].[Valor] AS [Valor], 
[Extent1].[FC] AS [FC], 
[Extent1].[UC] AS [UC]
FROM [dbo].[Bar] AS [Extent1]
WHERE 1001 = [Extent1].[IdBar]
Algo bastante simple que nos puede ayudar bastante en algún momento.

Happy coding!

No hay comentarios:

Publicar un comentario