在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时出错。
是否有人更好地捕获这些以揭露哪些参数失败?