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

标签 c# sql-server entity-framework stored-procedures azure-sql-database

我有这样的代码:

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

其中databaseContext是System.Data.Entity.DbContext类型

我想使用返回值来了解存储过程是否成功运行。基于the documentation 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

知道我在这里做错了什么吗?

最佳答案

基于 DavidG 的评论:

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

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

关于c# - 使用 ExecuteSqlCommand 从存储过程中获取返回值(使用 Entity Framework ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33747405/

相关文章:

sql-server - Sql Server 2008 代理日志清除

c# - 什么是 POCO Entity Framework

c# - 如何在 protobuf-net.grpc 的消息中使用 IAsyncEnumerable?

c# - 绑定(bind)到列表的模型抛出 "Collection is read-only"异常

sql - 每个日期的事件总数

c# - 为什么 C# 在控制台 writeline 中显示一个四舍五入的值,但作为实际值插入到数据库中?

sql-server - 将 SQL Server 的 CONTAINS() 导入为模型定义的函数

linq - 在EF 4.0中将字符串转换为Int

c# - 创建 PCL NET 4.0 在 Visual Studio 2015 中出现错误

c# - 无法在 WCF REST 服务中反序列化 XML