Используйте метод заглушки :
public void UpdateOrder(Order o)
{
var stub = new Order { Id = o.OrderId }; // create stub with EntityKey
ctx.Orders.Attach(stub); // attach stub to graph
ctx.ApplyCurrentValues("Orders", o); // override stub with values.
ctx.SaveChanges();
}
Если объект уже находится в графе, вы получите исключение OSM (объект с ключом уже существует).
Я противодействую этому, проверяя, существует ли сначала объект в графе (TryGetObjectStateEntry), и присоединяя его, только если его нет.