gpt4 book ai didi

c# - EF6 存储过程必须声明标量变量

转载 作者:行者123 更新时间:2023-11-30 14:52:02 25 4
gpt4 key购买 nike

我正在尝试使用 C# EF6 调用存储过程来取回数据。我曾尝试在 SQL Management Studio 中运行存储过程,它似乎工作正常,但是当我尝试在我的应用程序中运行它时,出现错误提示 "Must declare the scalar variable "@devID"

这是我在应用程序中调用存储过程的方法的一部分

 public IHttpActionResult GetMetrics(int deviceID, string attribute, string startDate)
{

if (deviceID == 0)
{
return NotFound();
}

var metrics = db.Database.SqlQuery<Metrics>("GetMetrics @devID, @MetricType, @startTime", deviceID, attribute, startDate).ToList();

这是我的存储过程:

    ALTER PROCEDURE [dbo].[GetMetrics]
-- Add the parameters for the stored procedure here
@devID int,
@MetricType nvarchar(20),
@startTime nvarchar(50)
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

-- Insert statements for procedure here
SELECT *
FROM dbMetrics
WHERE deviceID = @devID and MetricType = @MetricType and timeStamp >= @startTime
ORDER BY timeStamp
END

最佳答案

根据 documentation ,如果你想使用命名参数,你需要像这样传递SqlParameter对象:

var metrics = db.Database.SqlQuery<Metrics>("GetMetrics @devID, @MetricType, @startTime", 
new SqlParameter("devID", deviceID),
new SqlParameter("MetricType", attribute),
new SqlParameter("startTime", startDate)
).ToList();

关于c# - EF6 存储过程必须声明标量变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32629440/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com