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 SqlParameter
es nulo. Sospecho que mi llamada a ExecuteSqlRaw
no 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.
fuente