Миграция базы данных для Entity Framework 4

Я играл с Entity Framework 4, используя подход, основанный на модели, для создания сценария базы данных из моих сущностей. Это здорово, но я не уверен, как это работает, когда дело доходит до управления версиями базы данных. Я предполагаю, что если бы я хотел использовать активную структуру миграции типа записи, мне пришлось бы работать наоборот и создавать свои объекты из моей базы данных? Есть ли способ использовать подход, основанный на модели, и правильную версию базы данных?


person Charlie    schedule 04.02.2010    source источник
comment
В настоящее время Microsoft активно работает над этой функцией для Entity Framework, вы можете прочитать об этом в блоге группы ADO.NET в сообщениях Code First Migrations. blogs.msdn.com/b/adonet   -  person Bart Verkoeijen    schedule 22.09.2011


Ответы (5)


Это скоро появится в пакете NuGet под названием EntityFramework.Migrations.

Демонстрация была представлена ​​Скоттом Хансельманом на конференции TechEd 2011 (доступна в Интернете по адресу http://channel9.msdn.com/Events/TechEd/NorthAmerica/2011/DEV349). Соответствующий раздел находится на 45-й минуте.

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

migrate -script

ОБНОВЛЕНИЕ (13 ноября 2011 г.)

Альфа-версия 3 этого пакета теперь доступна в NuGet. Вместо упомянутого выше командлета migrate -script используется командлет Add-Migration <migrationname>. обзор его использования можно найти в блоге команды ADO.NET.

ОБНОВЛЕНИЕ (14 февраля 2012 г.)

Эта функция теперь доступна как часть основного пакета EntityFramework NuGet, начиная с версии 4.3. обновленное пошаговое руководство с использованием EF 4.3 можно найти в блоге команды ADO.NET.

person Richard Fawcett    schedule 20.05.2011

Вы можете попробовать Wizardby: это инструмент для управления миграцией базы данных. Он не интегрируется с EF (поскольку практически невозможно интегрироваться с ним в этом отношении), но выполняет свою работу.

person Anton Gogolev    schedule 11.03.2010
comment
Супер! это очень многообещающий проект с открытым исходным кодом! - person Korayem; 01.12.2011

ScottGu что-то упоминает об этом в запись в блоге:

Мы также собираемся поддерживать функцию «миграции» с EF в будущем, которая позволит вам программно автоматизировать/создавать сценарии миграции схемы базы данных.

[РЕДАКТИРОВАТЬ]

Я думаю, он может иметь в виду Entity Designer Database Generation Power Pack, как ответил Мортеза Манави в еще один ответ SO.

person Cameron Stone    schedule 08.04.2011

Ну, если вы хотите работать как ActiveRecord, то вам нужно работать как ActiveRecord. :)

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

person Craig Stuntz    schedule 04.02.2010

Я работаю над альтернативой библиотеке EF.Migrations — EntityFramework.SchemaCompare. Это позволяет физически сравнивать схему БД с моделью сущностей, представляющей контекст базы данных (EF.Migrations этого не делает). Это может быть запущено либо во время инициализации базы данных, либо вручную по запросу. Рассмотрим следующий пример

#if DEBUG
Database.SetInitializer(new CheckCompatibilityWithModel<DatabaseContext>());
#endif

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

using (var ctx = new DatabaseContext())
{
    var issues = ctx.Database.FindCompatibilityIssues();
}

Затем, имея эти различия/проблемы несовместимости, вы можете либо обновить схему базы данных, либо модель.

Этот подход особенно полезен, когда вам нужен полный контроль над схемой и моделью базы данных и/или вы работаете в команде, где несколько членов группы работают над одной и той же схемой и моделью базы данных. Его также можно использовать в дополнение к EF.Migrations.

Разветвите меня на GitHub: https://github.com/kriasoft/data

person Konstantin Tarkus    schedule 15.12.2011