C# 存储库工作单元模式中的SqlParameters
在my Repository.cs中,我有以下方法C# 存储库工作单元模式中的SqlParameters,c#,.net-4.5,C#,.net 4.5,在my Repository.cs中,我有以下方法 /*** Execute stored procedure ***/ public virtual void ExecuteProcedure(String procedureCommand, params SqlParameter[] sqlParams) { Ctxt.Database.ExecuteSqlCommand(procedureCommand, sqlParams); } 我从我的客户机存储库中将其称为: public b
/*** Execute stored procedure ***/
public virtual void ExecuteProcedure(String procedureCommand, params SqlParameter[] sqlParams)
{
Ctxt.Database.ExecuteSqlCommand(procedureCommand, sqlParams);
}
我从我的客户机存储库中将其称为:
public bool CanLock(int spvId)
{
SqlParameter[] parameter = { new SqlParameter ("spvId", spvId) };
bool isLock = ExecuteProcedure("Exec prc_SitePartVrsn_CanLock {0}", parameter);
return false;
}
我收到错误消息:
ExecuteProcess具有无效参数
有人能建议如何传递参数吗
另外,prc\u SitePartVrsn\u CanLock
有一个输出参数,请告知如何传递输出参数并获取要在客户端存储库中使用的值?您应该尝试以下操作:
public bool CanLock(int spvId)
{
SqlParameter[] parameter = { new SqlParameter ("spvId", spvId) };
bool isLock = ExecuteProcedure("Exec prc_SitePartVrsn_CanLock @spvId", parameter);
return false;
}
您必须在sql命令中命名参数。我使用以下方法解决了此问题:
public bool CanLock(int spvId)
{
SqlParameter parameter = new SqlParameter("spvId", SqlDbType.Int);
parameter.Value = spvId;
ExecuteProcedure("Exec prc_SitePartVrsn_CanLock {0}", parameter);
return false;
}
但是有没有更好的方法来处理这个问题,比如一次创建一个参数数组?与ExecuteProcess中的{0}有关(“Exec prc_SitePartVrsn_CanLock{0}”,parameter)命令?很抱歉,这不起作用,参数类型有问题,或者与params关键字有关可能
new SqlParameter(“@spvId”,spvId)
?和params
允许您直接传递SqlParameter
。无需事先创建数组(尽管这样做不会导致错误)。这意味着您可以执行:ExecuteProcedure(“Exec prc_SitePartVrsn\u CanLock@spvId”,new SqlParameter(“@spvId”,spvId))