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

Zai*_*zvi 4 c# sql-server stored-procedures entity-framework azure-sql-database

我的代码看起来像这样:

int retval = databaseContext.Database.ExecuteSqlCommand(command, sqlParameters.ToArray());
Run Code Online (Sandbox Code Playgroud)

其中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
Run Code Online (Sandbox Code Playgroud)

知道我在这里做错了吗?

Zai*_*zvi 5

基于DavidG的评论:

如果它是select语句的结果,则ExecuteSqlCommand仅返回值.

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