У меня есть локальный экземпляр базы данных, которую я недавно создал с использованием DbContext.Database.Create()
, поэтому таблица __MigrationHistory
существует с записью InitalCreate
, которая соответствует коду на данный момент.
Однако некоторые миграции на основе кода существуют в папке Migrations. Они будут запускаться в наших средах разработки и подготовки, чтобы привести эти базы данных в соответствие с кодом. Однако мне не нужно применять их локально, поскольку я создал базу данных, используя текущий код.
Теперь мне нужно внести изменения в модель и создать соответствующую миграцию. Но когда я запускаю 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 на другую среду, потому что не гарантируется, что версия совпадает с моей локальной версией. Я хочу выполнить миграцию, которая соответствует только внесенным мною изменениям.
Кажется, у меня есть несколько вариантов, но ни один из них не идеален:
- Удалите другие миграции из папки Migrations, выполните команду Add-Migration, обновите базу данных, а затем восстановите старые миграции. Это просто, но кажется немного хакерским.
- Вернитесь к версии модели в системе контроля версий, к которой была применена первая миграция, затем создайте ее и используйте для создания базы данных. Затем получите последнюю версию, примените все миграции, и я готов добавить свою миграцию. Это похоже на большие усилия!
- Создать миграцию вручную.
Есть ли у кого-нибудь предложения о том, как с этим справиться?