0

在我的 Repository.cs 中,我有以下方法

/*** Execute stored procedure ***/
public virtual void ExecuteProcedure(String procedureCommand, params SqlParameter[] sqlParams)
{
  Ctxt.Database.ExecuteSqlCommand(procedureCommand, sqlParams);
}

我从我的客户端存储库中调用它:

public bool CanLock(int spvId)
{
  SqlParameter[] parameter = { new SqlParameter ("spvId", spvId) };
  bool isLock = ExecuteProcedure("Exec prc_SitePartVrsn_CanLock {0}", parameter);
  return false;
}

我收到错误:

ExecuteProcedure 的参数无效。

有人可以建议如何传递参数。

另外,prc_SitePartVrsn_CanLock有一个输出参数,还请告知我如何传递输出参数并获取要在我的客户端存储库中使用的值?

4

2 回答 2

1

你应该试试这个:

public bool CanLock(int spvId)
{
  SqlParameter[] parameter = { new SqlParameter ("spvId", spvId) };
  bool isLock = ExecuteProcedure("Exec prc_SitePartVrsn_CanLock @spvId", parameter);
  return false;
}

您必须在 sql 命令中命名参数。

于 2013-05-22T09:50:23.673 回答
1

我已经使用以下方法解决了这个问题:

    public bool CanLock(int spvId)
    {
        SqlParameter parameter = new SqlParameter("spvId", SqlDbType.Int);
        parameter.Value = spvId;

        ExecuteProcedure("Exec prc_SitePartVrsn_CanLock {0}", parameter);
        return false;
    }

但是有没有更好的方法来处理这个问题,比如一次性创建一个参数数组?

于 2013-05-22T10:16:17.303 回答