Я использую веб-развертывание для развертывания приложения MVC4 с использованием кода EF5. Я создал профиль публикации под названием "разработка", который использует развертывание веб-приложений для приложения и базы данных с помощью флажка "Выполнять первые шаги миграции" для запуска миграции при запуске приложения. Издание отлично работало некоторое время. В какой-то момент я добавил новый публичный профиль под названием "test" для развертывания на другой сервер, который использует метод развертывания ftp и автоматическую миграцию. Это тоже отлично. Однако, когда я снова попытался использовать свой старый профиль для разработки, VS автоматически изменит параметры на dbDacFx (вместо флажка "Обновить базу данных" вместо "Выполнять первые шаги миграции" ), и я не могу вернуть его обратно так оно и было. Были и другие изменения в проекте при использовании профиля "Тест", но ничто из того, что мне кажется, не может вызвать этого. Кто-нибудь знает, почему VS считает, что мой проект больше не использует код?
Флажок "Выполнять первые шаги миграции" исчез из моего профиля публикации
Ответ 1
Вот правильный answer - проблема решена для меня. Просто переименуйте строку соединения точно так же, как ваш DbContext, например.
public ApplicationDbContext()
: base("Vocabulary.Domain.ApplicationDbContext", throwIfV1Schema: false)
{
}
Обратите внимание, что имя должно содержать пространство имен, например "Vocabulary.Domain.ApplicationDbContext". Не забудьте обновить файлы .pubxml:
<ObjectGroup Name="Vocabulary.Domain.ApplicationDbContext" Order="1" Enabled="True">
Эта статья описывает, когда диалог публикации имеет или не имеет отметки "Выполнять первые миграции кода (выполняется при запуске приложения)"
Ответ 2
Спрашивая этот вопрос, я несколько раз сталкивался с этой проблемой в нескольких версиях MVC и EF (весь код сначала, хотя из курса). Когда это произойдет, не сохраняйте изменения в своем опубликованном профиле, убедитесь, что вы находитесь в конфигурации "отладки", чистом решении и восстановлении. И если все это не удается, перезапустите Visual Studio и повторите попытку. До сих пор это всегда решало проблему для меня.
Ответ 3
Это случилось со мной в VS2013. Ни чистка решения, ни перезапуск не сработали. Я попытался "перезапустить" миграции, и он сработал. Несмотря на то, что у меня появилось сообщение об ошибке, что миграция уже включена в проекте, снова появляется флажок "Выполнять первые шаги миграции".
Ответ 4
Так как ничего упомянутого выше не работало.
Я загрузил publish profile
из лазурного, и он работал безупречно в первый раз
Ответ 5
У меня была эта проблема, и для меня это имело другую причину для любого, что я нашел в другом месте.
Мое приложение распространяется на многие проекты в решении. Поскольку я использую интерфейсы и отдельную модель View/Presentation для обертывания вызовов в базу данных, мой передний веб-проект не имел прямой ссылки на проект, содержащий класс DbContext. Обратите внимание, что это не создавало проблем для моего запуска сайта локально. Я делаю это так, чтобы разработчики в веб-проекте с интерфейсом не испытывали соблазна обходить слой Presentation и больше обращаться непосредственно к базе данных.
Добавление этой ссылки немедленно устранило проблему, и теперь я вижу флажок "Выполнять первые шаги миграции" в диалоговом окне "Опубликовать профиль".