Bảng của tôi Sections
(Máy chủ SQL) có ID
làm khóa chính (int, identity)
và SortIndex
cột (int) cho mục đích sắp xếp.Khuôn khổ thực thể không cập nhật giá trị được sửa đổi bởi kích hoạt
Cơ sở dữ liệu có trình kích hoạt đặt SortIndex := ID
ở mỗi INSERT
. Rõ ràng là tôi muốn thay đổi chỉ mục sắp xếp sau, bằng cách hoán đổi các giá trị cho hai hàng.
Tôi truy cập dữ liệu bằng cách sử dụng Khung thực thể, tất cả đều có ứng dụng web MVC3.
Vấn đề là, Entity Framework không cập nhật giá trị SortIndex
sau khi tôi chèn một đối tượng mới vào bảng. Nó cũng lưu trữ tất cả dữ liệu, vì vậy cuộc gọi sau để nhận tất cả các đối tượng từ bảng này cũng sẽ cung cấp giá trị sai cho giá trị SortIndex
cho đối tượng này.
Tôi đã thử thay đổi StoreGeneratedPattern
cho cột này trong EDMX
. Điều này có vẻ là tuyệt vời và thanh lịch nhưng không giải quyết được vấn đề.
Nếu tôi đặt thành Identity
, nó làm cho EF cập nhật đúng giá trị, nhưng nó trở thành chỉ đọc (ngoại lệ được ném khi cố thay đổi). Đặt nó thành Computed
là tương tự, nhưng thay vì ngoại lệ được ném các giá trị chỉ không được ghi vào DB.
tôi có thể tái tạo lại đối tượng EF mỗi lần nếu tôi cần phải sử dụng nó sau khi chèn một đối tượng, chỉ bằng cách làm:
DatabaseEntities db = new DatabaseEntities()
Nhưng nó có vẻ như workaround xấu xí cho tôi.
Giải pháp cho vấn đề này là gì?
Rõ ràng là điều gì đó, những gì không yêu cầu tôi phải thực hiện một số hành động sau mỗi insert
(và có nguy cơ bị lãng quên và không được chú ý) được ưu tiên.
có thể trùng lặp: http://stackoverflow.com/questions/5445243/reload-field-value-modified-in-db-by-trigger-sau-chèn-cập nhật –
Nó tương tự, nhưng anh ta dường như có một lĩnh vực mà anh ta không cần phải viết. "Tính toán" sẽ tốt cho anh ta. Nó không hoạt động vì một số lỗi. – Arek