Обновление схемы базы данных с помощью Entity Framework Code First - PullRequest
11 голосов
/ 14 апреля 2011

Entity Framework Code First - отличная среда для разработки новых проектов. Но как насчет расширения существующей базы данных?

Например, что если я просто хочу добавить дополнительное свойство к существующему объекту данных? Есть ли какой-нибудь «сначала код» способ сделать это, или мне придется добавить столбец базы данных вручную, используя SQL Server Management Studio или аналогичный инструмент?

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

Если я не ошибаюсь, есть инструмент для Ruby on Rails, который может генерировать скрипт SQL, отражающий новые изменения базы данных. Есть ли способ сделать это в EF Code First?

Ответы [ 4 ]

9 голосов
/ 03 января 2012

В настоящее время я использую библиотеку EntityFramework.Migrations, которая решает проблему развития схемы БД.Он работает над созданием классов миграции, которые генерируют сценарии SQL для обновления вашей схемы.

В настоящее время он все еще находится в стадии бета-тестирования, но я нашел его полезным.К сожалению, вы все равно должны генерировать сценарии переноса данных.

Более подробную информацию вы можете найти здесь .

7 голосов
/ 14 апреля 2011

К сожалению, нет.В настоящее время нет способов инкрементного построения базы данных в EF code-first. Команда ADO.NET описала некоторый подход , над которым они работают, но эти инструменты еще не опубликованы.Единственный способ - использование базы данных или модели в первую очередь.Это означает, что вы можете напрямую смоделировать свои изменения в базе данных и продолжить кодирование, или вы можете использовать модель EDMX и Power Generation Power Pack для наращивания вашей БД.Вы все еще можете генерировать DbContext из EDMX с помощью нового шаблона T4, добавленного в EF 4.1, но вы потеряете свой путь к определению классов сущностей (они будут созданы шаблоном).

3 голосов
/ 19 июля 2011

Я сейчас работаю над похожей проблемой.

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

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

Проекты базы данных FYI способны создавать сценарии изменений в существующих базах данных без потери всех ваших данных. Вы можете настроить проект БД так, чтобы он предупреждал вас, если выполняемое изменение вредно для данных, и не запускать в таких случаях.

Я еще не закончил доработку своего решения (изменил SsdlToSql10.tt, который ef использует для создания sql. Делая его более дружественным к проектам баз данных!).

1 голос
/ 19 марта 2012

Visual Studio имеет инструмент сравнения схем.После изменения кода вы можете создать базу данных, а затем использовать Schema Compare для постепенного изменения проекта базы данных или другой базы данных

...