O Entity Framework cria migração vazia, mas insiste que meu modelo é diferente

Hoje é um dia triste. A primeira coisa que vi hoje foi a exceção da EF dizendo que "O modelo que suporta o contexto 'DomainContext' mudou desde que o banco de dados foi criado.". É quase meia-noite e ainda vejo esse erro. Este é o fim da minha carreira - (

Tenho certeza de que nada mudou no modelo, mas o erro apareceu. Eu tentei criar uma nova migração, ela saiu vazia:

public void Up()
{
}
public void Down()
{
}

A aplicação dessa migração não foi boa - o erro persistiu. Usei a sugestão comum para definir o inicializador como nulo:

Database.SetInitializer<DomainContext>(null);

E cometeu o erro desaparecer ao acessar o banco de dados. Mas isso me incomoda muito - sempre que tento executar migrações por código, vejo erros semelhantes novamente:

var configuration = new Migrations.Configuration();

configuration.TargetDatabase = new DbConnectionInfo("correct connection string", "System.Data.SqlClient");

var migrator = new DbMigrator(configuration);

migrator.Update(); // <<-- exception is thrown here

O lançamento de exceção é assim:System.Data.Entity.Migrations.Infrastructure.AutomaticMigrationsDisabledException: Não foi possível atualizar o banco de dados para corresponder ao modelo atual porque há alterações pendentes e a migração automática está desabilitada. Escreva as alterações de modelo pendentes em uma migração baseada em código ou ative a migração automática. Defina DbMigrationsConfiguration.AutomaticMigrationsEnabled como true para ativar a migração automática.

Atualizei para o EF 6.1 (estava na 6.0.2 antes), mas isso não fez diferença.

Outra coisa que me incomoda é que eu posso executar migrações através do Nuget Console:

Update-Database

Funciona bem e não apresenta problemas. Mas quando defino o inicializador de banco de dados para executar migrações automaticamente:

var initializer = new MigrateDatabaseToLatestVersion<DomainContext, Migrations.Configuration>();
Database.SetInitializer(initializer);
var domainContext = new DomainContext();
domainContext.Database.Initialize(true); // <<-- this throws exception

Não foi possível atualizar o banco de dados para corresponder ao modelo atual porque há alterações pendentes e a migração automática está desabilitada. Escreva as alterações de modelo pendentes em uma migração baseada em código ou ative a migração automática. Defina DbMigrationsConfiguration.AutomaticMigrationsEnabled como true para ativar a migração automática.

A verdadeira questão é por que o EF possui hashes diferentes para modelos ao executar no console Nuget e no inicializador de banco de dados de migração? Como posso descobrir o que é diferente (modelo do db-state)? E como consertar isso, para não precisar usar hacks (atribuir nulo ao db-initaliser)?

questionAnswers(2)

yourAnswerToTheQuestion