Führen Sie die gespeicherte Prozedur in EF Core 3.0 vs 2.2 aus


8

Ich versuche, meinen Code zu aktualisieren, um Änderungen in EF Core 3.0 Rechnung zu tragen, insbesondere die Ablehnung von ExecuteSqlCommand.

Der folgende Code funktionierte in 2.2, aber wie gesagt, ich muss loswerden 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);

Ich habe versucht, den Aufruf in zu ändern ExecuteSqlRaw(wobei alles andere identisch bleibt), aber das löst, obwohl es kompiliert wird, zur Laufzeit die folgende Ausnahme aus:

Die SqlParameterCollection akzeptiert nur Objekte vom Typ SqlParameter, nicht SqlParameter

Ich habe mit dem Debugger nachgefragt und keiner von ihnen SqlParameterist null. Ich vermute, dass mein Anruf bei ExecuteSqlRawnicht richtig formatiert ist, aber ich kann keine anderen Beispiele finden, als Anrufe in Linq-Abfragen zu integrieren, die ich nicht tun muss. Ich möchte nur den Aufruf der gespeicherten Prozedur auslösen und mir den Ausgabeparameter ansehen, wenn er fertig ist.

Antworten:


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.