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