Entity Framework пытается добавить миграцию таблиц, которые уже находятся в базе данных

62
6

При попытке запустить приложение ASP.NET MVC локально, все работает нормально. Но как только я развернул его Azure, он продолжает давать мне ошибку:

Невозможно обновить базу данных в соответствии с текущей моделью, так как есть ожидающие изменения, и автоматическая миграция отключена.

Поэтому я подключился к удаленной базе данных с помощью консоли диспетчера пакетов в Visual Studio и выполнил команду "Обновить базу данных". Это дало мне ту же ошибку. Когда я смотрю на базу данных внутри SQL Server Management Studio, это похоже на то, что применяются все миграции.

Поэтому после этого я попытался запустить Add-Migration, чтобы проверить, не были ли какие-либо изменения, которые я не заметил. Созданная им миграция была точно такой же, как и предыдущие две миграции (там нет ничего, что не было в одной из этих миграций).

До сих пор сайт работал нормально всего около двух недель, включая несколько миграций. Я не понимаю, как это решить, поэтому любая помощь приветствуется.

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

спросил(а) 2021-01-19T18:01:37+03:00 2 месяца, 3 недели назад
1
Решение
75

Если вы уверены, что Add-Migration создает скрипт для уже примененных изменений, вам необходимо обновить состояние миграции вашей базы данных. Вы можете сделать это, добавив пустую миграцию. Это позволит захватить состояние вашей текущей модели.

Add-Migration MergeChanges –IgnoreChanges 

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

ПРИМЕЧАНИЕ. Запустите это, только если у вас нет ожидающих изменений, но вы видите сообщение об ошибке для обновления базы данных.

ответил(а) 2021-01-19T18:01:37+03:00 2 месяца, 3 недели назад
44

Вероятно, у вас есть 2 и более DbSet <> с тем же "именем" в вас Model/IdentityModels.cs, сгенерированный сам при обновлении базы данных через консоль диспетчера пакетов. Постарайтесь сохранить только тот, который вы хотите. Надеюсь, поможет

ответил(а) 2021-01-19T18:01:37+03:00 2 месяца, 3 недели назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема