Estou tentando atualizar meu código para acomodar alterações no EF Core 3.0, especificamente a descontinuação de ExecuteSqlCommand
.
O código a seguir estava funcionando na versão 2.2, mas conforme indicado, preciso me livrar 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);
Tentei alterar a chamada para ExecuteSqlRaw
(deixando tudo idêntico), mas isso, embora seja compilado, gera a seguinte exceção em tempo de execução:
O SqlParameterCollection aceita apenas objetos do tipo SqlParameter não nulos, não objetos do SqlParameter
Eu verifiquei com o depurador e nenhum deles SqlParameter
é nulo. Suspeito que minha chamada para ExecuteSqlRaw
não esteja formatada corretamente, mas não consigo encontrar nenhum outro exemplo que não seja a integração de chamadas nas consultas do Linq que não preciso fazer. Eu só quero acionar a chamada para o procedimento armazenado e dar uma olhada no parâmetro de saída quando terminar.
fonte