Afficher l'état SQL à exécuter dans Dapper

.net ado.net dapper

Question

Je voudrais savoir si est possible de voir ce que la requête SQL traite de façon soignée des paramètres ont été analysés dans la chaîne SQL. Par exemple donné le code suivant:

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();

J'aimerai savoir si à un moment donné (peut-être dans la source Dapper?) Puis-je voir quelque chose comme:

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';

modifier

Je supposais que les espaces réservés paramètres seront remplacés par les valeurs, selon toutefois après avoir examiné attentivement la source de Dapper je me rends compte que son juste relayer sur un IDbCommand pour exécuter la requête, donc après avoir examiné cette question , il est possible de voir exécuter déclaration à l'intérieur de .Net?

J'essaye ceci:

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

Cependant, le résultat ne semble pas être comme je l'espère:

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;

Réponse acceptée

Pour ce qui est de la question fondamentale: le moyen le plus simple consiste à utiliser un outil comme un mini-profileur et une connexion enveloppée.

Dapper a bien des manipulations de requêtes - mais en réalité: pas dans le cas montré. La réponse simple est que le SQL exécuté correspond exactement au contenu de SQL .

La plupart des fournisseurs ADO.NET prennent en charge les paramètres jusque dans la base de données. Si votre fournisseur ne le fait pas , il ne sera pas visible, sauf via les outils de surveillance de votre base de données.




Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi