我收到此错误:
System.ArgumentException HResult=0x80070057 Message=No mapping
exists from object type
System.Collections.Generic.List`1[[System.Data.SqlClient.SqlParameter,
System.Data, Version=4.0.0.0, Culture=neutral,
PublicKeyToken=b77a5c561934e089]] to a known managed provider native
type. Source=<Cannot evaluate the exception source>
我用谷歌搜索过,示例是有人尝试使用对象而不是文本值作为
SqlParameter
值。比如,他们尝试使用 someControl
而不是 someControl.Text
。在我的例子中,下面的 toStatus
和 fromStatus
已经是字符串了。我不确定还有什么问题。我错过了什么?
public void UpdateStatus(SearchCriteria searchCriteria, string fromStatus, string toStatus)
{
var sql = new StringBuilder();
var sqlParameters = new List<SqlParameter>();
sql.Append("UPDATE Schema.Table SET Status = @toStatus WHERE Status = @fromStatus");
sqlParameters.Add(new SqlParameter("@toStatus", toStatus) { SqlDbType = SqlDbType.VarChar });
sqlParameters.Add(new SqlParameter("@fromStatus", fromStatus) { SqlDbType = SqlDbType.VarChar });
db.ExecuteSqlCommand(sql.ToString(), sqlParameters);
}
ExecuteSqlCommand
需要一个数组而不是 List
。db.ExecuteSqlCommand(sql.ToString(), sqlParameters.ToArray());