Ver la declaración SQL para ser ejecutada en Dapper

.net ado.net dapper

Pregunta

Me gustaría saber si es posible ver qué aspecto tiene en realidad la declaración SQL una vez que los parámetros han sido analizados en la cadena SQL. Por ejemplo, dado el siguiente código:

const string SQL = @"
SELECT *
   FROM V_PROVIDER_WAGE_OVER_REVENUE
WHERE SITE_ID = :SITE_ID 
   AND VENDOR_ID = :VENDOR_ID
   AND date_paid >= :DATE_FROM 
   AND date_paid <= :DATE_TO;";

conn.Query<ProviderWageOverRevenueModel>(SQL, new { 
     VENDOR_ID = vendorId, 
     SITE_ID = siteId, 
     DATE_FROM = dateFrom, 
     DATE_TO = dateTo 
}).ToList();

Me gustaría saber si en algún momento (¿tal vez dentro de la fuente Dapper?) Puedo ver algo como:

SELECT *
   FROM V_PROVIDER_WAGE_OVER_REVENUE
WHERE SITE_ID = 199
   AND VENDOR_ID = 17
   AND date_paid >= '01/01/2014' 
   AND date_paid <= '20/11/2014';

Editar

Asumí que los parámetros marcadores de posición se reemplazarán con los valores, sin embargo, después de mirar de cerca la fuente de Dapper, me doy cuenta de que simplemente está retransmitiendo en un iDbCommand para ejecutar la consulta, por lo que después de ver esta pregunta es posible ver ejecutado declaración dentro de .Net?

Intento esto:

string query = cmd.CommandText;
foreach (DbParameter p in cmd.Parameters)
{
    query = query.Replace(p.ParameterName, p.Value.ToString());
}

sin embargo, el resultado no parece ser como espero:

SELECT *
    FROM V_PROVIDER_WAGE_OVER_REVENUE
WHERE 23411127316 = :23411127316 
    AND 23411076816 = :23411076816
    AND date_paid >= :1/07/2014 10:11:34 PM 
    AND date_paid <= :12/12/2014 12:00:00 AM;

Respuesta aceptada

En términos de la pregunta fundamental: la forma más fácil de hacerlo es con una herramienta como miniprofilador y una conexión envolvente.

Dapper tiene algunas cosas de manipulación de consultas, pero en realidad: no en el caso que se muestra. Entonces, la respuesta simple es que el SQL ejecutado es exactamente el contenido de SQL .

La mayoría de los proveedores ADO.NET admiten parámetros hasta la base de datos. Si su proveedor no lo hace , entonces no será visible, excepto a través de las herramientas de monitoreo de su propia base de datos.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
¿Es esto KB legal? Sí, aprende por qué