Заставьте EF4.3 Code First Migrations игнорировать ожидающие миграции

У меня есть локальный экземпляр базы данных, которую я недавно создал с помощью DbContext.Database.Create(), поэтому таблица __MigrationHistoryсуществует с InitalCreate запись, совпадающая с кодом на данный момент.

Однако некоторые миграции на основе кода существуют в папке «Миграции». Они будут выполняться в наших средах разработки и промежуточной среды, чтобы привести эти базы данных в соответствие с кодом. Однако мне не нужно применять их локально, поскольку я создал базу данных, используя текущий код.

Теперь мне нужно внести изменения в модель и создать соответствующую миграцию. Но когда я запускаю Add-Migration TestMigration, я получаю следующую ошибку

Unable to generate an explicit migration because the following explicit 
migrations are pending: 

[201203271113060_AddTableX, 
 201203290856574_AlterColumnY]

Apply the pending explicit migrations before attempting to generate 
a new explicit migration.

Что мне делать в этом случае? Я не могу указать инструмент Add-Migration на другую среду, потому что не гарантируется, что версия соответствует той, что у меня есть локально. Мне нужна миграция, которая соответствует только тем изменениям, которые я сделал.

Кажется, у меня есть несколько вариантов, но ни один из них не идеален:

  1. Удалите другие миграции из папки Migrations, запустите команду Add-Migration, обновите базу данных, затем восстановите старые миграции. Это просто, но кажется немного хакерским.
  2. Вернитесь к версии модели в системе управления версиями, к которой была применена первая миграция, затем создайте ее и используйте для создания базы данных. Затем получите последнюю версию, примените все миграции, и тогда я буду готов добавить свою миграцию. Это кажется большим усилием!
  3. Создайте миграцию вручную.

Есть ли у кого-нибудь какие-либо предложения о том, как с этим справиться?

6
задан Joe Taylor 29 March 2012 в 12:03
поделиться