Я играл с Entity Framework 4, используя подход, основанный на модели, для генерации сценария базы данных из моих объектов. Это здорово, но я не уверен, как это работает, когда дело доходит до версии базы данных. Я предполагаю, что если бы я хотел использовать активную структуру миграции типа записи, мне пришлось бы работать по-другому и генерировать мои объекты из моей базы данных? Есть ли способ правильно использовать подход, основанный на модели, и версию базы данных?Переходы базы данных для Entity Framework 4
ответ
Это будет в ближайшее время как пакет 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.
+1 для обновления – Karsten
Ну, если вы хотите работать как ActiveRecord, вам нужно работать как ActiveRecord. :)
Однако, если вы хотите использовать перенос модели сначала, но все же использовать, это будет возможно, но вам потребуется дополнительная работа от вашего имени. Сначала будет создана сценарий изменения базы данных. Вам нужно будет извлечь соответствующие части в миграции, а также вручную отменить сценарии отмены. Хотя это связано с ручным трудом, мне это не кажется ужасно трудным.
ScottGu упоминает что-то об этом в blog entry:
Мы также собираемся быть поддерживает «Миграции» функцию с EF в будущем, что позволит автоматизировать/скрипт схемы базы данных миграции программно.
[EDIT]
Я думаю, что он может быть ссылкой на Entity Designer Database Generation Power Pack как ответил Мортез Манави в another SO answer.
Я работаю над альтернативой 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
Microsoft сейчас активно работает над этой функцией для Entity Framework, вы можете прочитать об этом на ADO.NET блоге команды в качестве постов Code First миграций. http://blogs.msdn.com/b/adonet/ –