2

我对 ASP.NET MVC4 下面的线程有类似的问题,从带有实体框架的存储过程返回输出

我已经尝试过同样的事情,但我得到了错误:

无法将 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);

为什么我会收到这个错误?

如果我尝试替换varint那么我会收到错误

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

4

2 回答 2

0

尝试这个:

int? success = null;
Context.usp_UpdateValuesInTables(Convert.ToInt32(obj.SourceClientDropDown),ref success);
var successCode = success; //success is the returned result.
于 2013-09-29T12:05:31.467 回答
0

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

于 2013-09-29T14:34:05.117 回答