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 SqlParameter
ist null. Ich vermute, dass mein Anruf bei ExecuteSqlRaw
nicht 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.
quelle