Обновление схемы базы данных с помощью кода Entity Framework First

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

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

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

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

Ответ 1

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

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

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

Ответ 2

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

Ответ 3

Я работаю над подобной проблемой на данный момент.

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

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

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

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

Ответ 4

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