我正在尝试通过 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/