我们正在使用vs 2012。
我编写了下面的方法来在dbcontext上执行executionqlcommand。
//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);
}
这是传递参数的非常古老的方式。 我们是否有更好的方法在c#4.5 vs 2012中做到这一点。
请帮忙......
答案 0 :(得分:1)
除了你的语法,它会为你抛出一个错误,这几乎是唯一的方法。我更正了以下语法:
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] @spvId, @editMode OUTPUT", parameter, output);
bool retVal = (bool)output.Value; // same result as using Convert.ToBoolean
编辑除非您想使用
之类的内容var p = new SqlParameter {
ParameterName = "paramName",
DbType = DbType.Bit,
Direction = ParameterDirection.Output
};