SqlParameters在Repository工作单元模式中

时间:2013-05-22 09:44:14

标签: c# .net-4.5

在我的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有一个输出参数,请同时告诉我如何传递输出参数并获取要在我的客户端存储库中使用的值?

2 个答案:

答案 0 :(得分:1)

你应该试试这个:

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

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

答案 1 :(得分: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;
    }

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