MVC4将linq的存储过程输出返回给sql

时间:2013-09-29 11:54:07

标签: c# sql asp.net-mvc linq asp.net-mvc-4

我在ASP.NET MVC4 return output from a stored procedure with Entity Framework

下面有一个类似的问题

我尝试了同样的事情,但我收到了错误:

  

无法在

上为隐式类型的局部变量赋值void

这是我的程序:

create PROCEDURE [dbo].[usp_UpdateValuesInTables]  
(  
    @s_clientid int,
    @success int output
)  
AS  
BEGIN  
    Begin Try
        BEGIN TRAN  
            ---- sql statements
        COMMIT TRAN 
        set @success=1 
    End Try
    Begin Catch
        ROLLBACK TRAN  
        set @success=0  
    End Catch
END 

和c#代码

int? success = null;
var successCode = Context.usp_UpdateValuesInTables(Convert.ToInt32(obj.SourceClientDropDown),ref success);

为什么我会收到错误?

如果我尝试将var替换为int,那么我会收到错误

  

无法将void类型隐式转换为int

2 个答案:

答案 0 :(得分:0)

试试这个:

int? success = null;
Context.usp_UpdateValuesInTables(Convert.ToInt32(obj.SourceClientDropDown),ref success);
var successCode = success; //success is the returned result.

答案 1 :(得分:0)

您的问题是存储过程实际上不返回值,但实体框架不知道Void返回。您需要确保在存储过程中使用SET NOCOUNT ON,以便Entity Framework可以确定Void返回并映射默认值。