插入存储过程并返回输出参数

时间:2018-05-31 18:56:58

标签: c# entity-framework

我正在尝试在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);
}    

1 个答案:

答案 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 );