获取导致SQLException的Query/CommandText

Rei*_*ica 12 c# sqlexception .net-3.5

我有一个记录器,记录我们内部应用程序的异常信息.

当我们记录SQL异常时,如果我们能够看到导致异常的实际查询,那么它将非常有用.

有没有办法实现这个目标?

Ste*_*ven 17

SqlException不持有参考SqlCommand导致异常.在您的记录器中无法执行此操作.你可以做的是在执行SqlCommand它的方法中捕获SqlException 并将其包装在更具描述性的异常中.例:

using (var command = new SqlCommand(connection, "dbo.MyProc"))
{
    try
    {
        command.Execute();
    }
    catch (DbException ex)
    {
        throw new InvalidOperationException(ex.Message + " - " + command.Text, ex);
    }
}
Run Code Online (Sandbox Code Playgroud)

这样您就可以记录这个更具表现力的异常.

  • 不,因为新的异常包装了旧的异常。 (2认同)