13

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

+0

Microsoft сейчас активно работает над этой функцией для Entity Framework, вы можете прочитать об этом на ADO.NET блоге команды в качестве постов Code First миграций. http://blogs.msdn.com/b/adonet/ –

ответ

16

Это будет в ближайшее время как пакет NuGet называется EntityFramework.Migrations

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

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

migrate -script 

UPDATE (13 -Nov-2011)

Alpha 3 сборка этого пакета теперь доступна на NuGet. Вместо использования командлета migrate -script, упомянутого выше, он использует командлет Add-Migration <migrationname>. A walk-through of its use можно найти в блоге команды ADO.NET.

ОБНОВЛЕНИЕ (14-Feb-2012)

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

+0

+1 для обновления – Karsten

0

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

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

2

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

+0

Супер! это очень перспективный проект с открытым исходным кодом! – Korayem

1

ScottGu упоминает что-то об этом в blog entry:

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

[EDIT]

Я думаю, что он может быть ссылкой на Entity Designer Database Generation Power Pack как ответил Мортез Манави в another SO answer.

0

Я работаю над альтернативой EF.Migrations library - EntityFramework.SchemaCompare. Это позволяет физически сравнивать схему db с моделью сущностей, представляющей контекст базы данных (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

 Смежные вопросы

  • Нет связанных вопросов^_^