gpt4 book ai didi

c# - 使用 LINQ 访问存储过程值。 Entity Framework 5,数据库优先

转载 作者:行者123 更新时间:2023-11-30 20:54:51 26 4
gpt4 key购买 nike

我的存储过程运行正常。但是,我无法检索它。

我当前从存储过程中检索值的函数是:

    public static int GetCsStatus()
{
using (Entities db = new Entities())
{
System.Data.Objects.ObjectParameter s = new System.Data.Objects.ObjectParameter("Status", typeof(int));
int r = db.proc_CsStatus(120, s);//.ToString());
return r;
}
}

我不介意它是否被更改或根本不使用。当我期待 0 或 1 时,我目前得到的“r”值为 -1。

这是我的存储过程:

    USE [DATABASE_CS]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

ALTER PROCEDURE [dbo].[proc_CsStatus]
-- Add the parameters for the stored procedure here
@TimeLimit Int,
@Status Int OUTPUT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON

-- Declare variables.
DECLARE @LastUpdate Int

-- Calculate the LastUpdate.
SELECT @LastUpdate = DATEDIFF(second, Timestamp, CURRENT_TIMESTAMP)
FROM Heartbeat
WHERE Id=1

-- Compare it to the TimeLimit.
IF @LastUpdate > @TimeLimit SELECT @Status = 0
ELSE SELECT @Status = 1
END
GO

非常感谢任何意见!!!

最佳答案

执行您的程序后,您的 ObjectParameter s 将包含该值。您的过程调用不会返回它。您要查找的值应该可以在 s.Value 中找到。

尝试以下操作:

public static int GetCsStatus()
{
using (Entities db = new Entities())
{
System.Data.Objects.ObjectParameter s = new System.Data.Objects.ObjectParameter("Status", typeof(int));
int r = db.proc_CsStatus(120, s);
return (int)s.Value;
}
}

您返回的值 (r) 是受您的过程影响的行数。

更多信息:

在幕后,您的程序正在执行以下操作:

return base.ExecuteFunction("proc_CsStatus", input, output);

ObjectContext.ExecuteFunction() 返回受调用影响的行数。

关于c# - 使用 LINQ 访问存储过程值。 Entity Framework 5,数据库优先,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18752391/

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