Entity Framework 6 Model-First — обновление производственной базы данных на основе локальных изменений

Я новичок в EF и унаследовал проект, в котором, по-видимому, использовалась разработка в первую очередь базы данных.

В производственной среде используется SQL Azure, и я в основном пытаюсь выяснить стандартный подход к обновлению его схемы.

Сначала я попытался включить миграцию для проекта EF, прежде чем пытаться выполнить описанный здесь процесс: http://www.dotnet-tricks.com/Tutorial/entityframework/R54K181213-Understanding-Entity-Framework-Code-First-Migrations.html ... но я обнаружил, что это работает только для разработки кода.

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

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

Есть ли что-нибудь в инструментах EF, которые будут генерировать сценарии обновления, которые не удаляют таблицы? Нужно ли писать сценарии обновления вручную? Используют ли люди обычно инструменты SQL Server для обновления?

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


comment
Какие версии Visual Studio и .NET вы используете? Возможно, более поздние версии позволяют использовать плагины, которые могли бы решить эту проблему.   -  person Pieter21    schedule 30.08.2014


Ответы (1)


Миграция EF используется сначала для разработки кода, а не базы данных. Но вы все равно можете использовать его, если сделаете обратный инжиниринг из базы данных. Для этого вам необходимо установить Инструменты Entity Framework 6. , но для этого потребуются некоторые усилия, например

  • Обратный инжиниринг исходной базы данных
  • Создать новую базу данных с помощью миграции EF (Enable-Migrations, Add-Migration InitialCreate, Update-Database ConnectionStringName NewDatabase)
  • Обратное проектирование целевой базы данных (база данных, которая была изменена)
  • Создайте скрипт обновления (Enable-Migrations, Add-Migration UpgradeToVersionX, Update-Database ConnectionStringName NewDatabase -Script)

Кроме того, реверс-инжиниринг базы данных EF все еще имеет проблему, связанную с ограничением уникальности.


Но поскольку вы сначала работаете с базой данных, в которой вы изменяете схему напрямую из базы данных, проще использовать средство сравнения схем Инструменты данных SQL Server.

  • Создайте новый проект Проект базы данных SQL Server (из Другие языки -> SQL Server)
  • Щелкните проект правой кнопкой мыши и выберите Сравнение схем.
  • Выберите исходную базу данных и целевую базу данных.
  • Запустите Создать скрипт

Создать скрипт

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

person Yuliam Chandra    schedule 30.08.2014
comment
Спасибо. Я еще не пробовал то, что вы рекомендовали, но это очень похоже на то, что я искал. - person Colin; 04.09.2014