我正在尝试在Entity数据库中插入值,如果一切正常,则返回true。我测试了我的存储过程,它工作正常,但当我尝试从代码中调用它时,我收到以下错误:
对象类型System.Collections.Generic.List`1
中不存在任何映射
我的问题是:我是否正确称呼它?
using (Entities ent = new Entities())
{
List<SqlParameter> parameters = new List<SqlParameter>();
parameters.Add(new SqlParameter("@Parameter1", "Parameter1"));
parameters.Add(new SqlParameter("@Parameter2", "Parameter2"));
SqlParameter outputParameter = new SqlParameter();
outputParameter.ParameterName = "@Confirm";
outputParameter.SqlDbType = System.Data.SqlDbType.Bit;
outputParameter.Direction = System.Data.ParameterDirection.Output;
parameters.Add(new SqlParameter("@Confirm", outputParameter));
ent.Database.ExecuteSqlCommand("exec TestProc @Parameter1, @Parameter2", parameters);
bool success = Convert.ToBoolean(outputParameter.Value);
}
答案 0 :(得分:1)
ExecuteSqlCommand使对象[]不是List,因此传递parameters.ToArray()。
也不用输出参数表示成功或失败。如果出现问题,只需从存储过程中抛出错误。
并改变
SqlParameter outputParameter = new SqlParameter();
outputParameter.ParameterName = "@Confirm";
outputParameter.SqlDbType = System.Data.SqlDbType.Bit;
outputParameter.Direction = System.Data.ParameterDirection.Output;
parameters.Add(new SqlParameter("@Confirm", outputParameter));
到
SqlParameter outputParameter = new SqlParameter();
outputParameter.ParameterName = "@Confirm";
outputParameter.SqlDbType = System.Data.SqlDbType.Bit;
outputParameter.Direction = System.Data.ParameterDirection.Output;
parameters.Add( outputParameter );