Я создаю новое приложение, которое должно взаимодействовать с устаревшим кодом: (.
Хранимая процедура, которую я пытаюсь вызвать, использует RETURN для ее результата. Мои попытки выполнить и использовать возвращаемое значение приводят к исключению:
InvalidOperationException: при выполнении команды параметры должны быть исключительно параметрами или значениями базы данных.
Изменение сохраненного proc для возврата значения другим способом нежелательно, поскольку оно требует либо обновления устаревшего приложения, либо сохранения почти дублированного сохраненного proc.
Устаревший хранимый фрагмент кода:
DECLARE @MyID INT
INSERT INTO MyTable ...
SELECT @MyID = IDENTITY()
RETURN @MyID
Работа с My Entity Framework/DbContext, которая дает вышеописанное исключение InvalidOperationException.
SqlParameter parm = new SqlParameter() {
ParameterName = "@MyID",
Direction = System.Data.ParameterDirection.ReturnValue
};
DbContext.Database.ExecuteSqlCommand("EXEC dbo.MyProc", parm);
Поиск любых решений, которые не требуют изменения хранимой процедуры.