Entity Framework 4 - ApplyCurrentValues <TEntity> vs. ObjectStateManager.ChangeObjectState

Tenemos un servicio WCF con un método de actualización que actualiza a un Cliente en la base de datos. Este método obtiene una entidad separada del cliente.

void UpdtaeCustomer(Customer detachedCustomer);

Se nos ocurrieron dos formas de escribir este método:

1)

context.CustomerSet.Attach(detachedCustomer);
context.ObjectStateManager.ChangeObjectState(detachedCustomer, entityState.Modified);
context.SaveChanges();

2)

Customer customer = context.GetObjectByKey(detachedCustomer.EntityKey);
context.ApplyCurrentValues<Customer>("CustomerSet", detachedCustomer);
context.SaveChanges();

Queremos considerar los inconvenientes de cada método. El primero tiene una clara ventaja de tener solo un viaje al DB. Pero, ¿cuáles son las ventajas del segundo método? (o tal vez no actúan exactamente igual)