Làm thế nào tôi có thể cập nhật một thực thể mà không phải thực hiện cuộc gọi để chọn nó. Nếu tôi cung cấp khóa cho thực thể, nó sẽ không biết để cập nhật sau khi SaveChanges() được gọi trên ObjectContext.Thực thể cập nhật EF4 Không có thực thể bắt đầu
Tôi hiện làm điều này:
var user = context.Users.Single(u => u.Id == 2);
user.Username = "user.name";
user.Name = "ABC 123";
context.SaveChanges();
đó làm việc, nhưng buộc một lựa chọn. Vì tôi biết số Id
, tại sao tôi không thể làm điều gì đó như thế này:
var user = new User();
user.Id = 2;
user.Username = "user.name";
user.Name = "ABC 123";
context.UpdateObject(user);
context.SaveChanges();
Xin cảm ơn trước.
CHỈNH SỬA: Ngoài ra, điều quan trọng là chỉ thuộc tính bị ảnh hưởng được thay đổi mới được cập nhật. Điều này có thể không?
Điều đó không thực sự * cập nhật * đối tượng trong cơ sở dữ liệu. Nó thêm nó vào danh sách người dùng mặc dù. – TheCloudlessSky
Gọi 'context.ObjectStateManager.GetObjectStateEntry (người dùng) .ChangeState (EntityState.Modified);' thực hiện cập nhật ... – TheCloudlessSky
Bạn có thay đổi thuộc tính Tên sau "context.Users.Attach (user);"? – user386740