Флажок "Выполнить код первой миграции" исчез из моего профиля публикации

Я использую веб-развертывание, чтобы сначала развернуть приложение MVC4, используя код EF5. Я создал профиль публикации под названием "разработка", который использует веб-развертывание для приложения и базы данных с помощью флажка "Выполнить первые миграции кода" для запуска миграций при запуске приложения. Издание работало отлично некоторое время. В какой-то момент я добавил новый профиль публикации под названием "тест" для развертывания на другом сервере, который использует метод развертывания ftp и не выполняет автоматические миграции. Это тоже отлично работает. Однако, когда я снова попытался использовать свой старый профиль публикации "development", VS автоматически изменяет настройки на способ dbDacFx (флажок "Обновить базу данных" вместо "Выполнить первые миграции кода"), и я не могу вернуть его обратно в так оно и было. Были некоторые другие изменения в проекте при использовании профиля "Тест", но ничто, что мне кажется, не могло вызвать это. Кто-нибудь знает, почему VS считает, что мой проект больше не использует код в первую очередь?

5 ответов

Решение

Вот правильный ответ - это решенная проблема для меня. Просто переименуйте строку подключения точно так же, как ваш DbContext, например

        public ApplicationDbContext()
        : base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false)
    {
    }

Обратите внимание, что имя должно включать пространство имен, например "Vocabulary.Domain.ApplicationDbContext". Не забудьте обновить.pubxml файлы:

    <ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True">

В этой статье описывается, когда в диалоговом окне публикации установлен или не установлен флажок "Выполнить первые миграции кода (запускается при запуске приложения)".

Задав этот вопрос, я столкнулся с этой проблемой несколько раз в нескольких версиях MVC и EF (сначала весь код, конечно). Когда это происходит, не сохраняйте изменения в своем профиле публикации, убедитесь, что вы используете конфигурацию сборки "debug", чистое решение и решение для перестройки. И если все это не помогает, перезапустите Visual Studio и попробуйте снова. Пока что это всегда решало проблему для меня.

Это случилось со мной в VS2013. Ни очистка раствора, ни перезапуск его не сработали. Я попытался "включить" миграцию, и это сработало. Несмотря на то, что я получил сообщение об ошибке, что в проекте уже включены миграции, снова появился флажок "Выполнить первый код".

Так как ничего из вышеперечисленного не сработало.
Я скачал publish profile от лазурного, и это сработало в первый раз

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

У меня была эта проблема, и для меня она имела причину, отличную от той, которую я нашел в других документах.

Мое приложение распределено по многим проектам в решении. Поскольку я использую интерфейсы и отдельную модель представления / представления для переноса вызовов в базу данных, мой фронтальный веб-проект не имел прямой ссылки на проект, содержащий класс DbContext. Обратите внимание, что это не создавало проблем для моего локального запуска сайта. Я делаю это так, чтобы разработчики в интерфейсном веб-проекте не испытывали искушения обойти уровень представления и перейти непосредственно к базе данных.

Добавление этой ссылки немедленно решило проблему, и теперь я вижу флажок "Выполнить код при первой миграции" в моем диалоговом окне "Опубликовать профиль".