Executar procedimento armazenado no EF Core 3.0 vs 2.2


8

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 ExecuteSqlRawnã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.

Respostas:


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.