Я пытаюсь обновить свой код, чтобы учесть изменения в EF Core 3.0, в частности, устарел ExecuteSqlCommand
.
Следующий код работал в 2.2, но, как указано, мне нужно избавиться от ExecuteSqlCommand
:
SqlParameter srcid = new SqlParameter("@srcCharacterId", participantApplication.CharacterId);
SqlParameter newid = new SqlParameter("@newCharacterId", newCharacterId);
SqlParameter pResult = new SqlParameter
{
ParameterName = "@pResult",
SqlDbType = System.Data.SqlDbType.Bit,
Direction = System.Data.ParameterDirection.Output
};
_db.Database.ExecuteSqlCommand("pCharacterCopy @srcCharacterId, @newCharacterId, @pResult OUTPUT", srcid, newid, pResult);
Я попытался изменить вызов на ExecuteSqlRaw
(оставив все остальное идентичным), но, хотя он компилируется, выдает следующее исключение во время выполнения:
SqlParameterCollection принимает только ненулевые объекты типа SqlParameter, а не объекты SqlParameter
Я проверил с помощью отладчика, и ни один из SqlParameter
не является нулевым. Я подозреваю, что мой вызов ExecuteSqlRaw
не отформатирован правильно, но я не могу найти никаких примеров, кроме интеграции вызовов в запросы Linq, которые мне не нужны. Я просто хочу отключить вызов хранимой процедуры и взглянуть на выходной параметр, когда это будет сделано.