Como obter a última consulta SQL executada por SqlConnection?
Na verdade, meu cenário é um pouco diferente do mencionado aqui. eu pergunteide outros Pergunta, questão. Mas como não estou conseguindo solução lá, decidi mudar a abordagem.
eu tenho umSqlConnection
objeto acessível ao meu código. Todos os outros objetos do ADO.NET, comoSqlCommand
, SqlParameter
etc não são acessíveis para mim. Esses outros objetos são consumidos pelo Dapper Extensions ORM.
Meu aplicativo executa consultas SQL usandoSqlConnection
objeto e método Dapper Extensions. A consulta SQL é gerada automaticamente pelo Dapper Extensions; consulta gerada não está acessível para mim. Eu quero registrar esta consulta SQL.
Eu já tenho meu módulo de registro em vigor e a única coisa que preciso é da última consulta SQL executada pelo objeto de conexão.
Como obter a última consulta SQL executada porSqlConnection
?
SqlCommand
não é acessível.Se eu ficar subjacenteSqlCommand
, Posso criar a consulta usando o código abaixo; infelizmente, não está acessível para mim.
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;
}