C#到存储过程错误捕获

时间:2015-06-03 08:21:28

标签: c# asp.net-mvc

在C#mvc应用程序中,我使用存储过程将多个值传递回数据库。

db.Database.ExecuteSqlCommand("EXEC ......
    , new SqlParameter("@NameTitle", sessionValues.Employee.Title.OrDbNull())
    , new SqlParameter("@Initials", sessionValues.Employee.Initials.OrDbNull())
    , new SqlParameter("@Forename", sessionValues.Employee.Forename.OrDbNull())
    , new SqlParameter("@MondayStart", sessionValues.WorkPattern.MondayStart.NullDT())

orDbNull和NullDT的上下文

public static class MyClassOrDbNull
{
    public static object OrDbNull(this string s)
    {
        return string.IsNullOrEmpty(s) ? DBNull.Value : (object)s;
    }

    public static object NullDT(this DateTime? x)
    {
        return !x.HasValue ? DBNull.Value : (object)x;
    }
}  

我遇到了一些堆栈溢出错误,因为这个存储过程传递了大约50个参数,很难解决问题所在。

一个问题是获得

  

算术溢出错误将表达式转换为数据类型nvarchar

我认为是对于MondayStart日期部分传递null。存储过程将接受null。

评论说出来然后得到这个错误:

  应用程序中的服务器错误。

     

将数据类型nvarchar转换为tinyint时出错。

     

描述:执行当前Web请求期间发生了未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

     

异常详细信息:System.Data.SqlClient.SqlException:将数据类型nvarchar转换为tinyint时出错。

是否有人更好地捕获这些以揭露哪些参数失败?

0 个答案:

没有答案