MigrateAsync после использования EnsureCreatedAsync - PullRequest
1 голос
/ 17 июня 2019

У меня есть основной сайт mvc asp.net. DbInitializer использовал этот код: await context.Database.EnsureCreatedAsync()

Теперь я обнаружил, что миграция не применяется, и я видел это:

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

Я изменил код на await context.Database.MigrateAsync(), но миграции не применяются, и в моей базе данных dbo .__ EFMigrationsHistory Я не вижу никаких записей.

примечание: в моем решении уже есть 4 класса миграции в папке Migrations, но они добавлены в MigrationHistory. 3 из них применяются, потому что я когда-то воссоздал базу данных (все еще использую surecreated) Последняя миграция не применяется, поскольку я теперь не воссоздаю базу данных, поскольку она содержит данные, а миграции не применяются, потому что я использовал до «EnsureCreatedAsync».

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

1 Ответ

0 голосов
/ 21 июня 2019

Обнаружено, что это невозможно (надеюсь, я ошибаюсь).

  1. создал резервную копию базы данных с использованием SSMS.
  2. создал сценарий базы данных из таблицсодержащие данные.Чтобы у меня были все операторы вставки в файле .sql.
  3. удалил базу данных, создал новую пустую, убедился, что безопасность (назначить пользователя базы данных) была в порядке
  4. visual studio,удалил все миграции из решений, которые не были применены.
  5. удалил данные заполнения из моего решения (чтобы впоследствии не было конфликта с моими операторами вставки в сценарии .sql для возврата данных).
  6. снова включил миграцию, выполнив Add-Migration Initial
  7. Попробовал мои миграции с помощью Update-Database в моей базе данных разработки / отладки
  8. Опубликовал сайт и сделал его доступным на веб-сервере.
  9. запустил веб-сайт в IIS и проверил в SSMS, что все мои таблицы были созданы правильно и что _migrationhistory содержал мою Первичную миграцию
  10. открыл SSMS и запустил мой запрос из .sql со всеми операторами INSERT -> вседанные были добавлены снова.

теперь в моей (новой) базе данных включена миграция. ура для Microsoft!

...