Well, when you use Attach you tell the context that the entity is already in the database, SaveChanges will have no effect over attached entities. Add, on the other hand, changes the state of the entity in the context (if it’s already there) to Added, meaning it will always insert the entity in the database when you call SaveChanges.
That’s the difference.