【发布时间】:2014-08-06 20:36:10
【问题描述】:
我正在尝试从存储过程返回一个标量值。我实际上想返回一个新创建的记录的 ID,但我已将问题简化为一个存储过程,它采用 int 并尝试返回相同的 int。这总是返回-1。非常感谢您的帮助。
Web API 控制器调用
var idtest = dbconn.my_return_int(123);
存储过程:
ALTER PROCEDURE [dbo].[my_return_int]
@ID int
AS
BEGIN
SET NOCOUNT ON;
DECLARE @return as int
SET @return = -999
RETURN @return
END
Context 生成的存储过程调用
public virtual int my_return_int(Nullable<int> iD)
{
var iDParameter = iD.HasValue ?
new ObjectParameter("ID", iD) :
new ObjectParameter("ID", typeof(int));
return (IObjectContextAdapter)this).ObjectContext.ExecuteFunction("my_return_int", iDParameter);
}
【问题讨论】:
-
不确定这是否可行...stackoverflow.com/questions/16405521/…
-
感谢 DavidG 的文章。它让我开始走上正确的道路。所以我为解决这个问题所做的就是更改我的存储过程以返回一个 ObjectResult
而不是一个 int。然后我对存储过程调用的结果执行了 SingleOrDefault(),它产生了我的 int 返回值。这是完整的代码。
标签: entity-framework stored-procedures entity-framework-6