EF Core 3.0の変更、特にの廃止に対応するためにコードを更新しようとしていますExecuteSqlCommand。
次のコードは2.2で機能していましたが、前述のように、私は取り除く必要があります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);
呼び出しをExecuteSqlRaw(他はすべて同じにして)に変更しようとしましたが、コンパイルはできますが、実行時に次の例外がスローされます。
SqlParameterCollectionはnull以外のSqlParameterタイプのオブジェクトのみを受け入れ、SqlParameterオブジェクトは受け入れません
私はデバッガで確認しましたSqlParameterが、どれもnull ではありません。呼び出しがExecuteSqlRaw正しくフォーマットされていないと思われますが、必要のないLinqクエリに呼び出しを統合する以外の例は見つかりません。ストアドプロシージャの呼び出しを開始し、完了したら出力パラメーターを確認したいだけです。