我们正在为我们的应用程序使用存储库和工作单元模式
我有以下方法来执行存储的过程:
/*** 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/