6

Tôi có thể làm điều gì đó như bên dưới (không hoạt động) mà không phải đặt rõ ràng từng thuộc tính của đối tượng. Sản phẩm là đối tượng được tạo bởi trình kết nối mô hình mặc định từ một biểu mẫu gửi và ProductInDb là đối tượng trong ngữ cảnh/cơ sở dữ liệu mà tôi muốn ghi đè/cập nhật. Khóa chính ProductID giống nhau trên cả hai.Lưu thay đổi/cập nhật đối tượng hiện có trong tập dữ liệu với Entity FrameWork và không phải đặt từng thuộc tính riêng lẻ

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID); 

        ProductInDb = product; 

        context.SaveChanges(); 

Trả lời

13

Bạn có thể đính kèm product hiện tại và đặt trạng thái là Modified.

Nếu bạn đang sử dụng DbContext API

context.Products.Attach(product); 
context.Entry(product).State = EntityState.Modified; 

context.SaveChanges(); 

Đối ObjectContext

context.Products.Attach(product); 
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

context.SaveChanges(); 
+0

Không chứa một định nghĩa cho "Entry". Tôi có cần tham chiếu gì không? Đã sử dụng System.Data.Objects; Còn gì nữa? Nhấn ctrl +. không có gì cho Entry. – LaserBeak

+0

@LaserBeak Dường như bạn đang sử dụng 'ObjectContext'. Xem câu trả lời cập nhật của tôi. – Eranga

+0

@Eranga vui lòng xem câu hỏi sau của tôi: http://stackoverflow.com/questions/16085654/pk-violation-while-updating-via-ef/16086406?noredirect=1#16086406 –

Các vấn đề liên quan