带DbContext的ExecuteSqlCommand

时间:2013-05-22 10:57:43

标签: c# .net-4.5

我们正在为我们的应用程序使用存储库和工作单元模式

我有以下方法来执行存储过程:

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

我的客户端存储库将调用以下方法:

 //Check lock conditions for site part vrsm
        public bool CanLock(int spvId)
        {
            SqlParameter output = new SqlParameter("editMode", SqlDbType.Bit);
            output.Direction = ParameterDirection.Output;

        SqlParameter parameter = new SqlParameter("spvId", SqlDbType.Int);
        parameter.Value = spvId;

        ExecuteProcedure("exec [dbo].[prc_SitePartVrsn_CanLock] {0}, @editMode = {1} output", parameter, output);

        return Convert.ToBoolean(output.Value);
    }

然而,行ExecuteProcedure失败

  

“0”附近的语法不正确

我在Innerexception中没有任何其他信息,也没有来自堆栈跟踪的线索。 当我在数据库中执行它时,该过程正常。

有人可以建议问题是什么?

2 个答案:

答案 0 :(得分:4)

您不需要进行太多更改,只是语法问题:

ExecuteProcedure("exec prc_SitePartVrsn_CanLock @spvId, @editMode OUTPUT", parameter, output);

您可以使用[dbo].[prc_SitePartVrsn_CanLock]prc_SitePartVrsn_CanLock

答案 1 :(得分:0)

你试过吗

ExecuteProcedure("exec [dbo].[prc_SitePartVrsn_CanLock] @spvId, @editMode", parameter, output);