3

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

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

 /*** 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 中没有任何其他信息,也没有来自堆栈跟踪的任何线索。当我在数据库中执行该过程时,该过程运行良好。

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

4

2 回答 2

4

你不需要太多的改变,这只是一个语法问题:

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

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

于 2013-05-22T12:08:50.037 回答
0

你有没有尝试过

ExecuteProcedure("exec [dbo].[prc_SitePartVrsn_CanLock] @spvId, @editMode", parameter, output);
于 2013-05-22T12:03:59.050 回答