如何将值从存储过程返回到EF [英] How to return a value from a stored procedure to EF
本文介绍了如何将值从存储过程返回到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;
如果(!wasSuccessful)
{
// DO STUFF
}
我收到此错误消息:
数据读取器有多个字段。多个字段对EDM原语或枚举类型无效
我做错了什么?
解决方案
在程序结束前尝试选择@result
CREATE PROCEDURE [dbo]。[usp_test]
(
@result int OUT
)
AS
BEGIN
- DO STUFF
SET @result = 0
选择@result
END
希望它有效。
I'm attempting to call a stored proc through EF and retrieve a return value from the stored proc. I've used this answer as a guide. Here is my stored proc:
CREATE PROCEDURE [dbo].[usp_test]
(
@result int OUT
)
AS
BEGIN
--DO STUFF
SET @result = 0
END
Here is how I'm calling it from 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
}
I'm getting this error message:
The data reader has more than one field. Multiple fields are not valid for EDM primitive or enumeration types
What am I doing wrong?
解决方案
Try select @result
before end of procedure.
CREATE PROCEDURE [dbo].[usp_test]
(
@result int OUT
)
AS
BEGIN
--DO STUFF
SET @result = 0
Select @result
END
Hope it works.
这篇关于如何将值从存储过程返回到EF的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文