SQL错误:不存在与已知托管提供者类型的映射

时间:2018-06-26 18:38:35

标签: c# sql-server ado.net

我收到此错误:

  

System.ArgumentException HResult = 0x80070057消息=没有映射   存在于对象类型   System.Collections.Generic.List`1 [[System.Data.SqlClient.SqlParameter,   System.Data,版本= 4.0.0.0,文化=中性,   PublicKeyToken = b77a5c561934e089]]到本地的已知托管提供程序   类型。 Source = <无法评估异常源>

我已经用谷歌搜索了,这些示例是有人尝试使用对象而不是SqlParameter值的文本值。就像,他们尝试使用someControl而不是someControl.Text。就我而言,下面的toStatusfromStatus已经是字符串。我不确定还有什么问题。我想念什么?

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);
}

1 个答案:

答案 0 :(得分:2)

ExecuteSqlCommand需要一个数组,而不是List
用途如下

db.ExecuteSqlCommand(sql.ToString(), sqlParameters.ToArray());