Первая миграция кода со строками подключения - PullRequest
36 голосов
/ 25 февраля 2012

Итак, мне удалось запустить Code First, и он отлично работает.

Поскольку я все еще разрабатываю приложение, структура базы данных еще не завершена, и поэтому мне нужно осуществить миграцию.

Я последовал за Официальным сообщением в блоге и получил команду Update-Database.

Однако это только обновляет версию базы данных SQLExpress.Производственная версия базы данных находится на Azure, и я указываю строку подключения во время выполнения, поэтому команда Update-Database на этом не работает.

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

Ответы [ 2 ]

51 голосов
/ 25 февраля 2012

В консоли диспетчера пакетов введите:

Get-Help Update-Database

Соответствующая часть:

    Update-Database [-SourceMigration <String>] [-TargetMigration <String>] [-Script] [-Force] [-ProjectName <String>] [-StartUpProjectName <String>] [-ConfigurationTypeName <String>] [-ConnectionStringName <String>] [<Com
monParameters>]

Таким образом, вы можете сделать Update-Database -ConnectionStringName "MyConnectionString", и он должен работать какОчарование.

У вас также есть инициализатор базы данных MigrateDatabaseToLatestVersion, если вы установили его (через Database.SetInitializer()), когда вы развертываете свое приложение в рабочей среде с правильной строкой подключения, при первом доступе к БД оно должно автоматически мигрироватьВаш БД до последней версии.

Я предлагаю предостережение, всегда делайте резервные копии.

Обновление

@ Недавние комментарии Алексия Страха породили еще один аргумент, который стоит поставить в ответ.

Правильная настройка системы развертывания с использованием Code First Migrations, с учетом 2 ConnectionStrings.

  1. Определение строк подключения в web.config (prod и dev), по умолчаниюпароли
  2. Необходимо, чтобы система конфигурации вашего приложения знала о конфигурациях соединений prod и dev, при необходимости создавайте модульные тесты, чтобы убедиться, что выбран правильный вариант *
  3. Employ преобразование файла конфигурации и преобразование вашего web.config в файл со значениями производства
  4. Развертывание пакета в производство ( это должен быть самый передовой способ )

Вы не должны взаимодействовать с производственной средой из своего блока разработки, но если вам действительно нужно сделать это, то сделайте его временным решением, которое необходимо вернуть каккак только вы закончите.

Другой вариант - просто использовать Web.Debug.config и Web.Release.config и иметь центральный шаблон для основного web.config (который будет единственным, который вывойдите в систему управления исходным кодом).

Только убедитесь, что никогда не проверяете пароли производства или персональной разработки (если таковые имеются).

* Вы можете использовать символ DEBUG, чтобы проверить, как приложениеработает.

6 голосов
/ 11 января 2013

Почему для этапа добавления-миграции EF Migrations Entity Framework требуется строка подключения к базе данных?

Есть решение, которое я считаю менее трудоемким в долгосрочной перспективе. Как будто вы создаете строку подключения с тем же именем

В вашем контексте : Основание ( "DBName")

Имя строки подключения и начальный каталог соответствуют указанному вами имени DBName, и вам не нужно каждый раз вводить имя строки подключения.

...