我们正在为我们的应用程序使用存储库和工作单元模式
我有以下方法来执行存储过程:
/*** 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中没有任何其他信息,也没有来自堆栈跟踪的线索。 当我在数据库中执行它时,该过程正常。
有人可以建议问题是什么?
答案 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);