How can I update an entity without having to make a call to select it. If I supply the key for the entity, should it not know to update after SaveChanges() is called on the ObjectContext.
I currently do this:
var user = context.Users.Single(u => u.Id == 2);
user.Username = "user.name";
user.Name = "ABC 123";
context.SaveChanges();
That works, but forces a select. Because I know the Id
, why can't I do something like this:
var user = new User();
user.Id = 2;
user.Username = "user.name";
user.Name = "ABC 123";
context.UpdateObject(user);
context.SaveChanges();
Thanks in advance.
EDIT: Also, it's important that only the affected properties that are changed be updated. Is this possible?
Maybe following code work fine.
var user = new User();
user.Id = 2;
context.Users.Attach(user);
user.Username = "user.name";
user.Name = "ABC 123";
context.SaveChanges();
You can do this in a somewhat artificial way, by adding the entity and changing the EntityState to Modified:
var user = new User();
user.Id = 2;
user.Username = "user.name";
user.Name = "ABC 123";
context.AddToUsers(user);
ObjectStateEntry userEntry = context.ObjectStateManager.GetObjectStateEntry(user);
userEntry.ChangeState(EntityState.Modified);
context.SaveChanges();
In this way you will be telling the ObjectContext to find an entry with Id = 2 and update it rather than adding a new entry to the database.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With