В SQL Server 2008 у меня есть простая хранимая процедура, перемещающая кучу записей в другую таблицу:
CREATE PROCEDURE [dbo].MyProc(@ParamRecDateTime [datetime])
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO [dbo].Table2
SELECT
...,
...
FROM [dbo].Table1
WHERE RecDateTime <= @ParamRecDateTime
DELETE FROM [dbo].Table1
WHERE RecDateTime <= @ParamRecDateTime
END
Запустив ее из SQL Server Management Studio, я выполню работу и верну значение =0
DECLARE @return_value int
EXEC @return_value = dbo.MyProc @ParamRecDateTime = '2011-06-25 11:00:00.000'
SELECT 'Return Value' = @return_value
Но когда я вызываю ту же хранимую процедуру из приложения, использующего Entity Framework, я также выполняю работу, но возвращаемое значение равно "-1":
int result = myrepository.MyProc(datetimePar);
MessageBox.Show(result.ToString());
Мне не удалось найти объяснение этой ошибке, но я нашел этот обескураживающий пост, в котором говорится, что в SQL Server не существует стандарта для этого типа кодов возврата.
Каков хороший и надежный способ узнать результат выполнения хранимой процедуры при вызове его из Entity Framework и когда хранимая процедура не возвращает никаких сущностей?