Quero acrescentar alguns esclarecimentos a este tópico:
Update-Database -TargetMigration:"name_of_migration"
O que você está fazendo acima é dizer que deseja reverter todas as migrações ATÉ que fique com a migração especificada. Portanto, se você usa GET-MIGRATIONS e descobre que possui A, B, C, D e E, o uso desse comando reverte E e D para levá-lo a C:
Update-Database -TargetMigration:"C"
Além disso, a menos que alguém possa comentar o contrário, notei que você pode usar um valor ordinal e a opção -Target curta (assim, -Target é o mesmo que -TargetMigration). Se você deseja reverter todas as migrações e começar de novo, poderá usar:
Update-Database -Target:0
0, acima, reverteria mesmo a PRIMEIRA migração ( este é um comando destrutivo - saiba o que você está fazendo antes de usá-lo! ) - algo que você não pode fazer se usar a sintaxe acima que requer o nome de a migração de destino (o nome da 0ª migração não existe antes da aplicação da migração!). Portanto, nesse caso, você deve usar o valor 0 (ordinal). Da mesma forma, se você aplicou as migrações A, B, C, D e E (nessa ordem), o ordinal 1 deve se referir a A, o ordinal 2 deve se referir a B e assim por diante. Portanto, para reverter para B, você pode usar:
Update-Database -TargetMigration:"B"
ou
Update-Database -TargetMigration:2
Editar outubro de 2019:
De acordo com essa resposta relacionada a uma pergunta semelhante, o comando correto é -Target
para o EF Core 1.1 enquanto -Migration
para o EF Core 2.0.