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
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.
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();
Didn't you have to select it anyway to get it's data to edit? If you cache it it won't cost you anything getting it again when you save it.