具有输出参数的存储过程在C#中返回-1

Apo*_*fix 1 c# sql-server stored-procedures entity-framework entity-framework-5

我有一个使用的简单C#应用程序,Entity Framework 5.0应使用输出参数调用存储过程。问题在于它不起作用,而是返回-1。

c#我的代码如下所示:

// Define the output paramaters
SqlParameter operatorID = new SqlParameter("@operatorID", SqlDbType.Int);
operatorID.Direction = ParameterDirection.Output;
SqlParameter operatorCode = new SqlParameter("@operatorCode", SqlDbType.Int);
operatorCode.Direction = ParameterDirection.Output;

var parameters = new List<object>();
parameters.Add(operatorID);
parameters.Add(operatorCode);

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID, @operatorCode", parameters.ToArray());
Run Code Online (Sandbox Code Playgroud)

存储过程如下所示:

CREATE PROCEDURE [dbo].[my_sp_name] 
( 
     @operatorID        int             OUTPUT 
    ,@operatorCode      int             OUTPUT
 )
AS
    SET @operatorID = 123
Run Code Online (Sandbox Code Playgroud)

我知道这没有任何意义,但这只是一个测试。

执行c#代码后的问题是该noOutput值是-1并且该operatorID值是空的,我希望它在哪里123

有人知道我做错了什么吗?

Sur*_*yan 6

您查询中的参数必须使用OUTPUT关键字

var noOutput = context.Database.ExecuteSqlCommand("EXEC my_sp_name @operatorID OUTPUT, @operatorCode OUTPUT", parameters.ToArray());
Run Code Online (Sandbox Code Playgroud)