Обновление вручную схемы базы данных, созданной EF code-first - PullRequest
2 голосов
/ 19 января 2012

У меня есть база данных, которая была создана с использованием подхода Entity Framework с кодом.

В настоящее время в нем всего 5 таблиц. Одна из таблиц с именем Incidents поддерживает класс Incident C #. Класс должен получить только одно дополнительное свойство - bool HasClaim.

Я знаю, что поскольку БД инициализируется с помощью DropCreateDatabaseWhenModelChanges, в тот момент, когда я попытаюсь инициализироваться с помощью скорректированного класса сущности, мои данные БД будут очищены, и будет создана новая база данных.

Какой самый простой путь для меня сделать это обновление класса / схемы? (в общем, как: чтение данных в XML, воссоздание БД и вручную, из кода C #, размещение новых объектов.)

P.S. Может быть, я могу пойти дальше и создать модель базы данных из текущей БД, настроить ее, настроить код и перенастроить, чтобы больше не использовать код в первую очередь? Мне кажется, что первый код в настоящее время хорош, только если вы на 100% уверены, что не будете менять модели после того, как БД будет запущена в производство. Но с успешными проектами это никогда не происходит!

Ответы [ 2 ]

1 голос
/ 19 января 2012

Описание

Лучше всего использовать EntityFramework.SqlMigrations

Вы можете изменить свои Models и DbSet и перенести изменения в базу данных без удаления и заново создать базу данных.

Доступно при использовании NuGet

Install-Package EntityFramework.SqlMigrations

Скотт Хансельман написал хороший пост об этом в блоге.

Дополнительная информация

0 голосов
/ 19 января 2012

Посмотрите на миграции Entity Framework: http://blogs.msdn.com/b/adonet/archive/2012/01/12/ef-4-3-beta-1-automatic-migrations-walkthrough.aspx

Другой подход состоит в том, чтобы использовать стратегию DropCreateDatabaseWhenModelChanges только в отладочных сборках (для тестовых сред), а затем изменять схему сценариев с помощью другого инструмента для обновления производственных сред.

...