До недавнего времени я использовал Automati c Миграции, использующие код Entity Framework впервые, даже в производственной среде, в моем MVC веб-проекте. Проект небольшой, и я знал о плюсах и минусах, используя автоматические c миграции. Это, однако, не было проблемой до сих пор.
После последней миграции, которая добавила только пару столбцов, я заметил, что через некоторое время я получил ошибки на веб-сайте. После проверки я заметил, что добавленные столбцы исчезли, и я убедился, что они были на месте ранее. Затем я проверил __MigrationHistory и заметил сотни строк с именем «xxxxxxxxxxxxxxx_AutomaticMigration». Я понял, что изменения, которые я сделал, были через некоторое время удалены с помощью части миграции Down. Строки в MigrationHistory начали складываться до этой миграции, но я не знаю, что изменилось в этих автоматических миграциях, потому что я ничего не заметил. Еще более странным было то, что через некоторое время была добавлена еще одна AutomaticMigration, которая снова добавила эти столбцы. Похоже, что он продолжает выполнять одну и ту же миграцию снова и снова, добавляя / удаляя миграцию.
После того, как я не смог решить проблему, я решил оставить автоматические c миграции, поэтому я установил
AutomaticMigrationsEnabled = false;
Я также использую MigrateDatabaseToLatestVersion на инициализаторе, если это релевантная информация.
Затем я удалил все строки AutomaticMigration в __MigrationHistory (я всегда создавал именованные миграции для всех изменений). Создал сценарий, используя update-database -script для миграции, вызвавшей проблему. Обновил код на сервере с этой сборкой и запустил скрипт. Тем не менее я получаю это поведение. Миграция удаляется в AutomaticMigration, несмотря на то, что в коде не настроено автоматическое выполнение c миграций.
Я попытался перезапустить сайт и пул приложений и выполнил команду iisreset / restart, чтобы проверить, было ли что-либо кэшировал, но не повезло. Я не могу избавиться от проблемы с автоматизацией c миграции.
Теперь я заметил, что после добавления AutomaticMigration (и мои изменения были удалены из БД) я видел, что исключения регистрировались из Hangfire, который выполняет запланированные задания, которые Контекст БД не может быть создан из-за отложенных миграций. Но если я верну сброс в состояние, которое, как я ожидаю, будет работать нормально, и я не буду жаловаться на ожидающие миграции.
У меня закончились идеи о том, что попробовать, и я не могу понять, почему это происходит, так любые идеи будут с благодарностью.