Я пытаюсь использовать context.Database
для выполнения сохраненного процесса, который вставляет запись и возвращает идентификатор. Я знаю, что моя процедура работает с использованием выходного параметра, выбора или возврата, но я не могу получить либо ExecuteSqlCommand
, либо SqlQuery<int>
, чтобы вернуть идентификатор.
Используя сохраненный процесс с возвратом,
INSERT INTO TableA (FieldA, FieldB)
RETURN SCOPE_IDENTITY
Я вижу возвращаемое значение 1010966
из SSMS
DECLARE @return_value int
EXEC @return_value = spInsertRecord
SELECT 'Return Value' = @return_value
Но ничего из того, что я сделал в своем приложении, не возвращает действительного значения.
Int64 result = context.Database.ExecuteSqlCommand
всегда возвращает 3, и я получаю ошибку при обращении к десятичной дроби при использовании SqlQuery<int>
.
Я попытался с выходным параметром, но не смог заставить код работать правильно, поэтому сосредоточился на приложении, потребляющем либо SELECT SCOPE_IDENTITY
, либо RETURN SCOPE_IDENTITY
За исключением создания моделей для замены логики, содержащейся в хранимой процедуре, я открыт для любых предложений по возврату значения как для сохраненного процесса, так и для уровня приложения.