Объект миграции EF уже существует ошибка

Я работаю над ASP.NET проект MVC с Entity Framework с кодом сначала из базы данных. Я получаю модели для каждой таблицы в базе данных. Я внес некоторые изменения в модели, включил миграции, и когда я начинаю миграцию, я получаю ошибку:

в базе данных уже есть объект с именем "TableName"."

Я пробовал с update-database -force но не помогло. Начальная миграция создает таблицы, которые уже существуют!

Как сделать первоначальную миграцию применить изменения на моделях и не создавать таблицы с самого начала?

и какова наилучшая практика синхронизации изменений между базой данных и моделями в этом случае?

3 ответов


попробуйте запустить

Add-Migration InitialCreate –IgnoreChanges 

команда в консоли диспетчера пакетов. Это создает пустую миграцию с текущей моделью в качестве моментального снимка. а затем запустите

Update-Database 

команда в консоли диспетчера пакетов. Это применит миграцию InitialCreate к базе данных. Поскольку фактическая миграция не содержит никаких изменений, она просто добавит строку в таблицу __MigrationsHistory, указывающую, что эта миграция уже применена.

посмотреть этой

затем измените свои модели и добавьте миграцию.

другой подход - просто прокомментировать весь код на up и down методы


решение Amr Alaa работает, но база данных не перешла на последнюю модель.

вот как это работало (используя автоматическую миграцию):

  1. удалить папку миграции
  2. выполнить enable-migrations
  3. установите для этих двух свойств значение true во вновь созданной конфигурации.cs

    public Configuration()
    {
        AutomaticMigrationsEnabled = true;
        AutomaticMigrationDataLossAllowed = true;
    }
    
  4. Выполнить Обновление-База Данных-Force

ваша база данных будет обновлена до последней схема и готово.

надеюсь, что это помогает.


лучшая и рабочая для меня идея-прокомментировать весь код в функциях вверх и вниз исходного файла миграции, а затем запустить dotnet ef database update Это должно работать нормально, убедитесь, что вы обновили миграцию, прежде чем комментировать начальную миграцию