我在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
答案 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
返回并映射默认值。