【问题标题】:How to get / store return value from stored procedure call in Entity Framework?如何从实体框架中的存储过程调用中获取/存储返回值?
【发布时间】:2016-11-29 13:14:38
【问题描述】:

存储过程:

CREATE PROCEDURE spIn  
    (@value1 varchar(100),
     @value2 varchar(100),)
AS
BEGIN
    INSERT INTO dbo.In(value1, value2,)
    VALUES (@value1, @value2,)
END
RETURN SCOPE_IDENTITY()
GO

在代码中是这样的

using (DBEntities dataContext = new DBEntities())
{
    dataContext.spIn(value1,value2);
}

身份值如何存储??

仅供参考,而函数导入我已经给出了 Int32 类型的标量,如果我检查列信息,则没有列。

【问题讨论】:

  • dataContext.spIn(value1,value2);的返回值是什么???
  • 不是问题的答案,但至少使用SCOPE_IDENTITY() 而不是@@IDENTITY
  • dataContext.spIn 的返回类型应该是标识,认为它可能是IEnumerable<int> 而不是int,它应该只有一个值。
  • 如果我试图存储与 int32 相同的标识值,它应该返回 int id_Value = Convert.ToInt32 (dataContext.spIn(value1,value2));我得到了转化价值,我试过 var id_Value = Convert.ToInt32 (dataContext.spIn(value1,value2));也是,但是那个 var 根本没有身份值@nozzleman
  • 感谢您的建议,但在这种情况下我无法更改它@Crowcoder

标签: c# asp.net sql-server entity-framework stored-procedures


【解决方案1】:

我已经改变了这样的存储过程:

CREATE PROCEDURE spIn  
    (@value1 varchar(100),
     @value2 varchar(100),)
AS
BEGIN
    INSERT INTO dbo.In(value1, value2,)
    VALUES (@value1, @value2,)
END
SELECT @@IDENTITY AS id
GO

代码更改如下

using (DBEntities dataContext = new DBEntities())
{
   int  = ID Convert.ToInt32(dataContext.spIn(value1,value2).FirstOrDefault().id); 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多