Объект миграции EF уже существует ошибка
Я работаю над ASP.NET проект MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграции, и когда я начинаю миграцию, я получаю ошибку:
в базе данных уже есть объект с именем "TableName"."
Я пробовал с update-database -force
но не помогло. Начальная миграция создает таблицы, которые уже существуют!
Как сделать первоначальную миграцию применить изменения на моделях и не создавать таблицы с самого начала?
и какова наилучшая практика синхронизации изменений между базой данных и моделями в этом случае?
3 ответов
попробуйте запустить
Add-Migration InitialCreate –IgnoreChanges
команда в консоли диспетчера пакетов. Это создает пустую миграцию с текущей моделью в качестве моментального снимка. а затем запустите
Update-Database
команда в консоли диспетчера пакетов. Это применит миграцию InitialCreate к базе данных. Поскольку фактическая миграция не содержит никаких изменений, она просто добавит строку в таблицу __MigrationsHistory, указывающую, что эта миграция уже применена.
посмотреть этой
затем измените свои модели и добавьте миграцию.
другой подход - просто прокомментировать весь код на up и down методы
решение Amr Alaa работает, но база данных не перешла на последнюю модель.
вот как это работало (используя автоматическую миграцию):
- удалить папку миграции
- выполнить enable-migrations
-
установите для этих двух свойств значение true во вновь созданной конфигурации.cs
public Configuration() { AutomaticMigrationsEnabled = true; AutomaticMigrationDataLossAllowed = true; }
Выполнить Обновление-База Данных-Force
ваша база данных будет обновлена до последней схема и готово.
надеюсь, что это помогает.
лучшая и рабочая для меня идея-прокомментировать весь код в функциях вверх и вниз исходного файла миграции, а затем запустить
dotnet ef database update
Это должно работать нормально, убедитесь, что вы обновили миграцию, прежде чем комментировать начальную миграцию