EF Core 3.0と2.2でストアドプロシージャを実行する


8

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クエリに呼び出しを統合する以外の例は見つかりません。ストアドプロシージャの呼び出しを開始し、完了したら出力パラメーターを確認したいだけです。

回答:


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.