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 для обновления? 

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

 Перенастройка EF используется для первой разработки кода, а не для базы данных. Но вы все равно можете использовать его, если вы делаете обратное проектирование из базы данных. Чтобы это сделать, вам нужно установить [**инструменты Entity Framework 6**](http://msdn.microsoft.com/en-us/data/ee712906.aspx) , но для этого вам понадобятся некоторые 

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

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

---

 Но так как вы сначала работаете с базой данных, в которой вы напрямую изменяете схему из базы данных, тем проще будет использовать Schema Comparer для [**SQL Server Data Tools**](http://msdn.microsoft.com/en-us/hh297027.aspx) . 

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

![Создать скрипт](https://i.stack.imgur.com/y3XpK.png)

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