У меня возникли проблемы с запуском миграции для создания/обновления базы данных Sql, размещенной в Azure. Они отлично работают локально в моем LocalDb, но, похоже, полностью игнорируются при выпуске в Azure.
Подробности: - Asp.Net MVC 5.2.3 - Entity Framework 6.1.3 - Visual Studio Team Services (онлайн) - Azure Web App и Azure SQL Db (по подписке Imagine/Dreamspark)
Я создал другое приложение, которое не использовало CI, но использовало функцию публикации в Visual Studio, и оно нормально публиковалось и работало. С тех пор я удалил это веб-приложение и базу данных из Azure, поскольку подписка позволяет использовать только одну базу данных.
Я думаю, что это может быть что-то, чего мне не хватает при настройке определения сборки в VSTS, я просто не уверен, что именно.
Я пытался:
- https://blogs.msdn.microsoft.com/webdev/2014/04/08/ef-code-first-migrations-deployment-to-an-azure-cloud-service/ (это сделало ничего для меня)
- https://www.benday.com/2016/11/07/using-tfs-build-to-deploy-entity-framework-database-migrations-with-migrate-exe/ (я получил ошибка сборки из-за того, что у меня не было определения выпуска в моей папке bin)
... а также куча других (у меня окна больше не открываются, иначе я бы их тоже связал).
Мои текущие шаги сборки включают:
- Восстановление NuGet — установщик NuGet
- Решение для сборки — сборка Visual Studio
- Тестовые сборки — тест Visual Studio
- Путь публикации символов — индексирование источников и публикация символов
- Опубликовать артефакт — опубликовать артефакты сборки
В моей локальной среде EF работает, когда я включаю миграцию, добавляю миграцию, обновляю базу данных. Я предполагаю, что ни один из вышеперечисленных шагов не делает этого, поэтому мне нужен один или несколько шагов. Похоже, что блог Бена Дэя должен работать, но по какой-то причине он не находит мой файл bin/release.
Фактическое приложение прекрасно развертывается в Azure после выпуска приведенного выше определения успешной сборки. Просто база данных полностью игнорируется. Используя SSMS, я проверяю базу данных Azure, и, хотя она существует, в ней нет ни одной из моих таблиц или данных.
Что мне не хватает?
Спасибо.
**Редактировать - нашел простой элемент, которого мне не хватало. Мне нужно добавить строку подключения для базы данных в веб-приложение в Azure. Теперь у него есть мои исходные таблицы, и он хранит данные с использованием этих таблиц, но не принимает миграции. Итак, то, что я сделал за последние два дня, вывело мои первоначальные таблицы. Теперь.. чтобы вспомнить, что это было.
** 2-е редактирование. Итак, я думаю, что таблицы попали в базу данных выпуска до того, как я исправил свою строку подключения в VSTS. Одна из вещей, которые я пробовал, заключалась в создании отдельного проекта базы данных. Я думаю, когда я в какой-то момент нажал это, существующие в то время таблицы также были выпущены, я просто не мог их видеть, потому что я не соединил приложение и БД вместе? Во всяком случае, миграции EF до сих пор не распознаются. Я снова попробовал предложение Бена Дэя, но получаю ошибку сборки:
Unhandled Exception: System.IO.FileNotFoundException: Could not load file or assembly 'EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified.
Я использую EF 6.1.3