我将对象分配给此 SqlParameter 列表,然后尝试执行 SqlCommand,但它引发异常,指出其中一个对象无法转换为 SqlDbType。最好在将这些对象添加到参数集合列表之前处理它们。那么,我将如何检查添加到参数列表的值是否是好的/正确的?我应该检查什么属性?
这是我的代码:
bool Submit(Progs progs, CommandType commandType, string commandText)
{
try
{
List<SqlParameter> paramCollection = new List<SqlParameter>();
foreach(Prog p in progs)
{
SqlParameter spTemp = new SqlParameter { ParameterName = p.Name , Value = p.Value};
paramCollection.Add(spTemp);
using (SqlConnection con = GetConnection())
{
SqlCommand cmd = new SqlCommand { CommandType = commandType, CommandText = commandText, Connection = con };
con.Open();
cmd.Parameters.AddRange(paramCollection ); // Exception is thrown from this line
cmd.ExecuteNonQuery();
}
return true;
}
catch(Exception exc)
{
return false;
}
}
异常表示: 不存在从对象类型 sol2.CodeBase.BL.Letter[] 到已知托管提供程序本机类型的映射。
PS:SqlParameter 有一个名为ParamaterIsSqlType的属性(是的,它是 paramAter 而不是 paramEter),它仅在运行时出现(即,当我在下一行检查 spTemp 时使用断点)并且始终设置为 false?这是什么属性,所以只在运行时出现???另外,这个“ParamaterIsSqlType”表示什么值?