C# 如何在实体框架中从存储过程中获取返回值?

C# 如何在实体框架中从存储过程中获取返回值?,c#,sql-server,entity-framework,C#,Sql Server,Entity Framework,我有一个存储过程,它将新记录从服务插入数据库或更新现有记录。 但如果插入/更新成功,我需要显示true;如果插入/更新失败,我需要显示false作为响应 因此,在我的存储过程中,从EF调用 result = database.usp_sp_name(parameters); if (result==0) return true; else return false; 我尝试了上面的代码,因为我在MSDN网站上读到,如果成功的交易意味着,结果将是0。但即使是插入记录或更新记录,

我有一个存储过程,它将新记录从服务插入数据库或更新现有记录。 但如果插入/更新成功,我需要显示true;如果插入/更新失败,我需要显示false作为响应

因此,在我的存储过程中,从EF调用

result = database.usp_sp_name(parameters);
if (result==0)
    return true;
else 
    return false;

我尝试了上面的代码,因为我在MSDN网站上读到,如果成功的交易意味着,结果将是0。但即使是插入记录或更新记录,我也会得到错误的响应。

在您的代码中,创建一个bool,它将保存storedproc的结果,如果storedproc的结果为1,则返回true。否则就错了

bool result = _entites.StoredProc(parameters);
return (result == 1) ? true: false;
但在存储过程中 您应该创建一个返回如下值的过程

CREATE PROCEDURE [dbo].[StoredProc]
    @parameter
AS
BEGIN
    DECLARE @result int
    DECLARE @param nvarchar(255)
    SET @param = @parameter

    INSERT INTO (field1) VALUES (@param)

    IF @@ERROR = 0
        SET @result = 1
    ELSE 
        SET @result = 0

RETURN @result

@@如果T-SQl语句未遇到错误,则返回0。您可以使用它将结果设置为1或0。请参阅此链接以了解更多信息。

这应该有效。如果从Management Studio调用该SP,它将返回0?您可以在实体框架中调试SP的代码,在那里您可以看到如何调用它以及它返回什么。如果它不工作,您至少应该能够找到失败的确切点。存储的进程是否在进程结束时返回值?否。我的意思是返回存储过程中默认的\u值参数。您试过了吗?您应该包括执行存储过程的代码。目前还不清楚这与实体框架的关系。