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

标签 c# sql sql-server entity-framework

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

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
}

我收到此错误消息:

The data reader has more than one field. Multiple fields are not valid for EDM primitive or enumeration types

我做错了什么?

最佳答案

在过程结束前尝试选择@result

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

--DO STUFF

SET @result = 0
Select @result
END

希望它有用。

关于c# - 如何将值从存储过程返回到 EF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35352605/

相关文章:

c# - 如何在15天后自动更新状态?

c# - 当我提前关闭 HttpWebResponse 时,Streamreader 不工作

sql - 如何填充表中行的空白

mysql - 查询返回与特定列中的许多值关联的行

SQL - 选择已结束最近契约(Contract)但还有其他契约(Contract)未结的员工

c# - 最小起订量是触发代码契约(Contract)?

javascript - mvc5 的日期时间的 DataFormatString

sql - NVL 在查询中使用案例

sql-server - 添加并填充列或添加持久计算列?

c# - 使用异步等待在 ForEach 中获取 "The connection does not support MultipleActiveResultSets"