必须使用dbcontext.Database.SqlQuery声明标量变量'@custid'?

时间:2013-12-04 21:13:07

标签: c# asp.net sql entity-framework

我正在尝试使用EF5从bcontext.Database.SqlQuery执行存储过程。

抛出错误must declare the scalar variable '@custid'

  var results = _MiscContext.Database.SqlQuery<int>(
              "exec sp_GetStaff @custid",
              customerNumber).ToList<int>();

如果customerNumber是工作人员,则SP返回1,否则返回empty行。

ALTER PROCEDURE [dbo].[sp_GetStaff]
    @custid varchar(12)
AS
BEGIN

    SET NOCOUNT ON;
SELECT 
1 AS [C1]
FROM  [dbo].[Staff] with (nolock)
WHERE [CUSTOMER_ID] = @custid


END

如何管理?

2 个答案:

答案 0 :(得分:25)

由于您正在使用命名参数,因此您必须为要传递的参数指定匹配名称。

var results = _MiscContext.Database.SqlQuery<int>(
    "exec sp_GetStaff @custid",
    new SqlParameter("custid", customerNumber)).ToList<int>();

答案 1 :(得分:1)

尝试

var results = _MiscContext.Database.SqlQuery<int>(
              "exec sp_GetStaff {0}",
              customerNumber).ToList();