Выполнение хранимой процедуры SQL с выходным параметром из Entity Framework

Используя EF, я пытаюсь выполнить хранимую процедуру, которая возвращает единственное строковое значение, то есть статус задания агента SQL.

Хранимая процедура объявлена ​​как

CREATE PROCEDURE [dbo].[up_GetJobStatus](@JobStatus NVARCHAR(30) OUTPUT)
AS

-- some code omitted for brevity

SELECT @JobStatus = (
SELECT  
    CASE job_state 
    WHEN 1 THEN 'Executing'
    WHEN 2 THEN 'Waiting for thread'
    WHEN 3 THEN 'Between retries'
    WHEN 4 THEN 'Idle'
    WHEN 5 THEN 'Suspended'
    WHEN 6 THEN '<unknown>'
    WHEN 7 THEN 'Performing completion actions'
END
FROM @xp_results results 
INNER JOIN msdb.dbo.sysjobs sj
ON results.job_id = sj.job_id
WHERE sj.job_id = @job_id)

RETURN

Я убедился, что хранимая процедура работает правильно, поскольку я могу выполнить ее в окне запроса, и она возвращает

    @JobStatus
  ------------
  1|Idle

Однако при выполнении с EF значение параметра равно NULL.

var param = new SqlParameter
{
    ParameterName = "@JobStatus",
    DbType = DbType.String,
    Size = 30,
    Direction = System.Data.ParameterDirection.Output
};

var result = this.etlContext.Database.SqlQuery<string>("EXEC dbo.up_GetJobStatus @JobStatus OUTPUT", param);

Я также попробовалExecuteSqlCommand метод, но это тоже не сработало.

Есть идеи?

Ответы на вопрос(3)

Ваш ответ на вопрос