¿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?

Lo siguiente no funciona porqueSqlCommand 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;
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta