Thực hiện quy trình được lưu trữ trong EF Core 3.0 so với 2.2


8

Tôi đang cố gắng cập nhật mã của mình để phù hợp với các thay đổi trong EF Core 3.0, cụ thể là sự phản đối ExecuteSqlCommand.

Đoạn mã sau đã hoạt động trong 2.2 nhưng như đã nêu, tôi cần loại bỏ 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);

Tôi đã thử thay đổi cuộc gọi thành ExecuteSqlRaw(để mọi thứ khác giống hệt nhau) nhưng điều đó, mặc dù nó biên dịch, ném ngoại lệ sau vào thời gian chạy:

SqlParameterCollection chỉ chấp nhận các đối tượng loại SqlParameter không null, không phải các đối tượng SqlParameter

Tôi đã kiểm tra với trình gỡ lỗi và không có cái SqlParameternào là null. Tôi nghi ngờ cuộc gọi của tôi ExecuteSqlRawkhông được định dạng chính xác nhưng tôi không thể tìm thấy bất kỳ ví dụ nào ngoài việc tích hợp các cuộc gọi vào các truy vấn Linq mà tôi không cần phải làm. Tôi chỉ muốn tắt cuộc gọi đến thủ tục được lưu trữ và xem xét tham số đầu ra khi nó được thực hiện.

Câu trả lời:


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.