带有DbContext的ExecuteSqlCommand

带有DbContext的ExecuteSqlCommand

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

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

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

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

最佳答案

您不需要做太多更改,这只是一个语法问题:

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


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

关于c# - 带有DbContext的ExecuteSqlCommand,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16689992/

10-11 01:23