Ejecutar procedimiento almacenado en EF Core 3.0 vs 2.2


8

Estoy tratando de actualizar mi código para acomodar los cambios en EF Core 3.0, específicamente el desuso de ExecuteSqlCommand.

El siguiente código funcionaba en 2.2 pero, como se indicó, necesito deshacerme de él 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);

Intenté cambiar la llamada a ExecuteSqlRaw(dejando todo lo demás idéntico) pero eso, aunque se compila, arroja la siguiente excepción en tiempo de ejecución:

SqlParameterCollection solo acepta objetos de tipo SqlParameter no nulos, no objetos SqlParameter

Lo he comprobado con el depurador y ninguno de ellos SqlParameteres nulo. Sospecho que mi llamada a ExecuteSqlRawno está formateada correctamente, pero no puedo encontrar ningún ejemplo que no sea integrar llamadas en consultas de Linq que no necesito hacer. Solo quiero disparar la llamada al procedimiento almacenado y echar un vistazo al parámetro de salida cuando esté listo.

Respuestas:


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.