SQL Error: No mapping exists to a known managed provider type

0

I'm getting this error:

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>

I've googled, and the examples are where someone tries to use an object instead of the text value for the SqlParameter value. Like, they try to use someControl instead of someControl.Text. In my case, below, toStatus and fromStatus are already strings. I'm not sure what else could be the problem. What am I missing?

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);
}
c#
sql-server
ado.net
asked on Stack Overflow Jun 26, 2018 by Bob Horn

1 Answer

2

ExecuteSqlCommand expects an array instead of a List.
Use as below

db.ExecuteSqlCommand(sql.ToString(), sqlParameters.ToArray());
answered on Stack Overflow Jun 26, 2018 by pfx

User contributions licensed under CC BY-SA 3.0