gist.github.com/ProductiveRage/31a92e1470b96ce34e454a73bd8e19c4

мом деле, мой сценарий немного отличается от упомянутого здесь. я спрашивалДругой вопрос. Но так как я не могу найти там решения, я решил изменить подход.

у меня естьSqlConnection объект доступен для моего кода. Все остальные объекты ADO.NET, такие какSqlCommand, SqlParameter и т.д. не доступны для меня. Эти другие объекты потребляются Dapper Extensions ORM.

Мое приложение выполняет запросы SQL, используяSqlConnection объект и метод Dapper Extensions. SQL-запрос автоматически генерируется Dapper Extensions; сгенерированный запрос не доступен для меня. Я хочу войти в этот запрос SQL.

У меня уже есть модуль логирования, и единственное, что мне нужно, это последний SQL-запрос, выполненный объектом соединения.

Как получить последний выполненный SQL-запросSqlConnection?

Следующее не работает, потому чтоSqlCommand не доступен

Если я буду лежать в основеSqlCommandЯ могу построить запрос из него с помощью кода ниже; к сожалению, это не доступно для меня.

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

Ответы на вопрос(1)

Ваш ответ на вопрос