必须使用 dbcontext.Database.SqlQuery 声明标量变量“@custid”?
Posted
技术标签:
【中文标题】必须使用 dbcontext.Database.SqlQuery 声明标量变量“@custid”?【英文标题】:must declare the scalar variable '@custid' using dbcontext.Database.SqlQuery? 【发布时间】:2013-12-21 13:43:31 【问题描述】:我正在尝试使用 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
如何管理?
【问题讨论】:
***.com/questions/4873607/… 【参考方案1】:由于您使用的是命名参数,因此您必须为要传递的参数指定匹配的名称。
var results = _MiscContext.Database.SqlQuery<int>(
"exec sp_GetStaff @custid",
new SqlParameter("custid", customerNumber)).ToList<int>();
【讨论】:
【参考方案2】:试试
var results = _MiscContext.Database.SqlQuery<int>(
"exec sp_GetStaff 0",
customerNumber).ToList();
【讨论】:
这会失去参数化查询的性能和安全优势。以上是关于必须使用 dbcontext.Database.SqlQuery 声明标量变量“@custid”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥必须将 SetWindowsHookEx 与 Windows 消息队列一起使用