У меня есть регистратор, который записывает информацию об исключении для нашего в приложениях дома.
Когда мы регистрируем исключения SQL, было бы супер полезно, если бы мы видели фактический запрос, который вызвал исключение.
Существует ли способ, которым мы можем достигнуть этого?
Исключение SqlException
не имеет ссылки на SqlCommand
, вызвавшее исключение. В вашем регистраторе нет способа сделать это. Что можно сделать, так это поймать исключение SqlException в методе, который выполняет SqlCommand
и обернуть его в более описательное исключение. Пример:
using (var command = new SqlCommand(connection, "dbo.MyProc"))
{
try
{
command.Execute();
}
catch (DbException ex)
{
throw new InvalidOperationException(ex.Message + " - " + command.Text, ex);
}
}
Таким образом можно записать это более выразительное исключение.