Vui lòng bao gồm:
- Định nghĩa thực thể
- Lớp / cấu hình ánh xạ từ ngữ cảnh
- Định nghĩa bảng SQL
BackPropagateServerGen
Nhìn vào dấu vết ngăn xếp, điều quan trọng tôi thấy là BackPropagateServerGen
.
Entity Framework đang chạy bản cập nhật của bạn dựa trên cơ sở dữ liệu, nhưng một trong các giá trị khóa tổng hợp của bạn (có lẽ là COPY_ID) đang thực sự bị thay đổi bởi lệnh gọi UPDATE. Giá trị do máy chủ tạo này sẽ quay trở lại từ lệnh gọi SQL và Entity Framework sau đó phàn nàn rằng giá trị khóa đang bị thay đổi so với bên dưới nó.
Vì vậy, tôi đoán rằng giá trị khóa tổng hợp COPY_ID của bạn được xác định là giá trị nhận dạng do máy chủ tạo, nhưng một hoặc cả hai giá trị này đang xảy ra:
- Bạn đang ánh xạ tới một chế độ xem hoặc một thủ tục được lưu trữ đang can thiệp vào những gì Khuôn khổ thực thể mong đợi về một CẬP NHẬT mới nhất
- Bạn có một hoặc nhiều trình kích hoạt trên bảng, chế độ xem hoặc quy trình được lưu trữ đang ảnh hưởng đến kết quả.
Nếu bạn có bất kỳ trình kích hoạt nào, hãy tạm thời tắt chúng để xem sự cố có xảy ra hay không, sau đó dừng lại.
Nếu bạn đang ánh xạ tới một dạng xem hoặc một thủ tục được lưu trữ, hãy thử ánh xạ trực tiếp tới bảng nếu có thể.
Sử dụng bất kỳ công cụ cấu hình nào bạn có để nắm bắt những gì SQL đang được thực thi bởi mã.
Tóm tắt
Tôi nghĩ rằng lệnh gọi UPDATE thực sự đang đến cơ sở dữ liệu, nhưng kết quả trả về đang thay đổi (các) giá trị khóa, khiến Entity Framework không thành công và có khả năng quay ngược giao dịch UPDATE (tùy thuộc vào phiên bản EF bạn đang sử dụng).