Entity Framework пытается добавить миграцию таблиц, которые уже находятся в базе данных
При попытке запустить приложение ASP.NET MVC локально, все работает нормально. Но как только я развернул его Azure, он продолжает давать мне ошибку:
Невозможно обновить базу данных в соответствии с текущей моделью, так как есть ожидающие изменения, и автоматическая миграция отключена.
Поэтому я подключился к удаленной базе данных с помощью консоли диспетчера пакетов в Visual Studio и выполнил команду "Обновить базу данных". Это дало мне ту же ошибку. Когда я смотрю на базу данных внутри SQL Server Management Studio, это похоже на то, что применяются все миграции.
Поэтому после этого я попытался запустить Add-Migration, чтобы проверить, не были ли какие-либо изменения, которые я не заметил. Созданная им миграция была точно такой же, как и предыдущие две миграции (там нет ничего, что не было в одной из этих миграций).
До сих пор сайт работал нормально всего около двух недель, включая несколько миграций. Я не понимаю, как это решить, поэтому любая помощь приветствуется.
Я уверен, что я подключаюсь к правильной базе данных, потому что я вижу, что это изменяется, когда я обновляю ее до целевой миграции. Я также нацелен на правильный проект.
Если вы уверены, что Add-Migration
создает скрипт для уже примененных изменений, вам необходимо обновить состояние миграции вашей базы данных. Вы можете сделать это, добавив пустую миграцию. Это позволит захватить состояние вашей текущей модели.
Add-Migration MergeChanges –IgnoreChanges
После выполнения этой команды у вас будет пустой сценарий миграции. Теперь вы можете обновить свою базу данных в соответствии с состоянием модели. Поскольку фактическая миграция не содержит никаких изменений, она просто добавит строку в таблицу __MigrationsHistory, указав, что эта миграция уже применена.
ПРИМЕЧАНИЕ. Запустите это, только если у вас нет ожидающих изменений, но вы видите сообщение об ошибке для обновления базы данных.
Вероятно, у вас есть 2 и более DbSet <> с тем же "именем" в вас Model/IdentityModels.cs, сгенерированный сам при обновлении базы данных через консоль диспетчера пакетов. Постарайтесь сохранить только тот, который вы хотите. Надеюсь, поможет