C# 使用ExecuteSqlCommand(使用实体框架)从存储过程获取返回值

C# 使用ExecuteSqlCommand(使用实体框架)从存储过程获取返回值,c#,sql-server,entity-framework,stored-procedures,azure-sql-database,C#,Sql Server,Entity Framework,Stored Procedures,Azure Sql Database,我有如下代码: int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray()); 其中databaseContext的类型为System.Data.Entity.DbContext 我想使用返回值来知道存储过程是否成功运行。基于ExecuteSqlCommand应返回存储过程的结果 但是,无论我如何设置存储过程,该命令总是将-1返回到retval。我尝试返回各种整数,甚至在存储过

我有如下代码:

int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
其中databaseContext的类型为System.Data.Entity.DbContext

我想使用返回值来知道存储过程是否成功运行。基于
ExecuteSqlCommand
应返回存储过程的结果

但是,无论我如何设置存储过程,该命令总是将-1返回到retval。我尝试返回各种整数,甚至在存储过程中调用RAISERROR,但返回值始终为-1

下面是我尝试过的两个存储过程,但它们都返回了-1,并且没有给出它是否成功运行的任何指示:

CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
      RAISERROR ('You fail', -- Message text.
                       0, -- Severity - operation failed.
                       500-- State.
                       );
END
GO

CREATE PROCEDURE [dbo].[myproc]
AS
BEGIN
      RETURN 1
END
GO

你知道我做错了什么吗?

根据大卫的评论:

ExecuteSqlCommand仅当它是select语句的结果时才返回值


如果需要存储过程的返回值(如问题中所示),则必须使用
EXEC@ReturnValue=[StoredProc]@param1…
方法,如中所述

@DavidG可能重复,不,这是另一个问题。这个问题要求查询采用特定的格式,而ExecuteSqlCommand文档似乎不需要任何此类内容。如果需要返回值,则必须使用该方法
ExecuteSqlCommand
不会为您执行此操作,除非可能有什么
SELECT
s将值放入结果集中。@DavidG,啊,我明白了。我看到了你联系的答案,但不理解其中的区别。如果你想把你的评论作为一个答案发表,我会接受的。不值得为这个评论发表一个答案。