使用 ExecuteSqlCommand 从存储过程中获取 return 值(使用 Entity Framework)

Get return value from stored procedure using ExecuteSqlCommand (using Entity Framework)

我的代码如下所示:

int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());

其中 databaseContext 的类型为 System.Data.Entity.DbContext

我想使用 return 值来知道存储过程 运行 是否成功。根据the documentation ExecuteSqlCommand应该return存储过程的结果。

但是,无论我将存储过程设置为做什么,命令总是 returns -1 到 retval。我试过 returning 各种整数,甚至在存储过程中调用 RAISERROR,但 return 值始终为 -1。

这是我尝试过的两个存储过程,但它们都 returned -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

知道我做错了什么吗?

基于 DavidG 的评论:

ExecuteSqlCommand 仅 returns 值,如果它是 select 语句的结果。

如果您想要存储过程的 return 值(如问题中所示),则必须使用 this SO answer 中描述的 EXEC @ReturnValue = [StoredProc] @param1 ... 方法。