Tôi đang chạy một số mã sửa chữa chạy trên một đống lớn các thực thể, khi tốc độ tiến triển của nó giảm xuống, đó là do số lượng các thực thể được theo dõi trong ngữ cảnh tăng lên với mỗi lần lặp, có thể mất nhiều thời gian nên tôi sẽ lưu các thay đổi vào cuối của mỗi lần lặp. Mỗi lần lặp là độc lập và không thay đổi các thực thể được tải trước.
Tôi biết tôi có thể tắt theo dõi thay đổi nhưng tôi không muốn, bởi vì nó không phải là một mã chèn hàng loạt, mà là tải các thực thể và tính toán một số thứ và nếu các số không chính xác, hãy đặt các số mới và cập nhật / xóa / tạo một số thực thể bổ sung. Tôi biết mình có thể tạo một DbContext mới cho mỗi lần lặp và có lẽ điều đó sẽ chạy nhanh hơn so với làm tất cả trong cùng một trường hợp, nhưng tôi đang nghĩ rằng có thể có một cách tốt hơn.
Vì vậy, câu hỏi là; Có cách nào để xóa các thực thể đã được tải trước đó trong ngữ cảnh db không?
context.Entry(entity).State = EntityState.Detached
và nó sẽ ngừng theo dõi thực thể cụ thể đó.