Как сначала изменяется схема обновления базы данных из модели EF5.0?

Я использую VS2012 и EF 5.0 с модельным первым подходом. Мне интересно, есть ли хороший способ создать инкрементный DDL для обновления изменений модели без удаления всех таблиц и потери данных, которые у меня уже есть.


person Dave    schedule 30.07.2012    source источник
comment
Вопрос на миллион долларов. Я установил VS2012 и смешался с EF, я искренне разочарован тем, насколько сложным Microsoft это превратила. Я хотел бы дать вам ответ, но я также ищу простое решение. Обычно я использую компонент Devart Entity Developer для Postgresql, и он делает именно то, что мне нужно, обновляет базу данных из модели, не удаляя таблицы. Я бы хотел, чтобы эта функция была включена в vs2012, но мои ожидания невелики.   -  person detay    schedule 13.08.2012
comment
Чтобы компенсировать это, я генерирую сценарий DDL (создание базы данных из модели), а затем запускаю сценарий данных, который я сгенерировал из базы данных, который мне иногда приходится настраивать, если я добавляю или удаляю поля в таблицах, в которых есть данные. их. И я храню сценарий данных в TFS, поэтому я могу повторно запускать данные для перезагрузки всякий раз, когда я регенерирую базу данных. Я хотел бы найти какое-нибудь лучшее решение, но это работает довольно прилично по сравнению с потерей всех ваших данных...   -  person Dave    schedule 14.08.2012


Ответы (1)


Мне нравится использовать проект данных SQL-сервера в Visual Studio, чтобы синхронизировать мои данные с базой данных — это похоже на мини-хранилище схем SQL-сервера.

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

  1. Создайте новый проект базы данных SQL Server.
  2. Щелкните правой кнопкой мыши проект данных и импортируйте существующую схему с сервера базы данных.
  3. Щелкните правой кнопкой мыши проект данных и импортируйте сгенерированный сценарий DDL из первого проекта модели.
  4. Щелкните правой кнопкой мыши проект данных и сравните схему вашего проекта с сервером базы данных.
  5. Обновите базу данных на основе этой схемы сравнения (нажмите «Обновить»)

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

person nh43de    schedule 20.03.2015
comment
Я предполагаю, что это спорный вопрос сейчас, когда MSFT решила отказаться от всего, кроме Code First, что иронично, поскольку это подход, который был самым отстойным, когда вышел EF и вынудил большинство из нас использовать Model First или Database First. - person Dave; 20.03.2015
comment
Я думаю, что лучший ответ в будущем — это использовать что-то вроде DevArt, которые поддерживают все 3 подхода, поскольку Sparx EA также отказывается приспосабливать поколение Code First к своим моделям, а Database First больше не является вариантом с MSFT, который был полезен для внедрения модели. изменения, внесенные EA. - person Dave; 20.03.2015