一尘不染

如何将值从存储过程返回到EF

sql

我正在尝试通过EF调用存储的过程,并从存储的过程中检索返回值。我已将此答案用作指导。这是我存储的过程:

CREATE PROCEDURE [dbo].[usp_test]
(
    @result int OUT
)
AS
BEGIN

--DO STUFF

SET @result = 0
END

这是我从EF调用的方式:

var status = new SqlParameter
{
    ParameterName = "result",
    DbType = DbType.Int32,
    Direction = ParameterDirection.Output 
};
var result = context.Database.SqlQuery<int>("EXEC usp_test @result", status);
var wasSuccessful = result.First() == 1;
if (!wasSuccessful)
{
    //DO STUFF
}

我收到此错误消息:

数据读取器具有多个字段。多个字段对于EDM原语或枚举类型无效

我究竟做错了什么?


阅读 132

收藏
2021-05-23

共1个答案

一尘不染

select @result在程序结束前尝试。

CREATE PROCEDURE [dbo].[usp_test]
(
    @result int OUT
)
AS
BEGIN

--DO STUFF

SET @result = 0
Select @result
END

希望它能工作。

2021-05-23