¿Cómo obtener la última consulta SQL ejecutada por SqlConnection?
En realidad, mi escenario es un poco diferente al mencionado aquí. he preguntadootro pregunta. Pero como no estoy obteniendo una solución allí, decidí cambiar el enfoque.
tengo unSqlConnection
objeto accesible a mi código. Todos los demás objetos de ADO.NET comoSqlCommand
, SqlParameter
etc no son accesibles para mí. Estos otros objetos son consumidos por Dapper Extensions ORM.
Mi aplicación ejecuta consultas SQL usandoSqlConnection
objeto y método Dapper Extensions. La consulta SQL es generada automáticamente por Dapper Extensions; La consulta generada no es accesible para mí. Quiero registrar esta consulta SQL.
Ya tengo mi módulo de registro en su lugar y lo único que necesito es la última consulta SQL ejecutada por el objeto de conexión.
Cómo obtener la última consulta SQL ejecutada porSqlConnection
?
SqlCommand
no es accesible.Si me pongo subyacenteSqlCommand
, Puedo construir la consulta a partir de él usando el código a continuación; desafortunadamente, no es accesible para mí.
public string GetCommandLogString(IDbCommand command)
{
string outputText;
if(command.Parameters.Count == 0)
{
outputText = command.CommandText;
}
else
{
StringBuilder output = new StringBuilder();
output.Append(command.CommandText);
output.Append("; ");
IDataParameter objIDataParameter;
int parameterCount = command.Parameters.Count;
for(int i = 0; i < parameterCount; i++)
{
objIDataParameter = (IDataParameter)command.Parameters[i];
output.Append(string.Format("{0} = '{1}'", objIDataParameter.ParameterName, objIDataParameter.Value));
if(i + 1 < parameterCount)
{
output.Append(", ");
}
}
outputText = output.ToString();
}
return outputText;
}