Как первое моделирование кода EF повлияет на уже существующие данные в базе данных - PullRequest
1 голос
/ 21 января 2012

Мне ясно, что я могу настроить поведение моделей синхронизации и процесс схемы БД.Для этого я использую класс DropCreateDatabaseIfModelChanges<>.

Предположим, у меня есть рабочий проект и сайт, и DB заполняет данные.Все работает нормально.

Однажды я решаю, что некоторые функции необходимо изменить.Изменения коснутся свойств моих моделей (их можно переименовать / удалить / добавить, некоторые модели будут новыми, некоторые модели удалены).

Мой вопрос: что произойдет с уже существующими данными наразвернутый сайт, когда я проверяю все свои изменения?

Я потеряю это?Если так, как я могу избежать этого?

1 Ответ

5 голосов
/ 21 января 2012

Да, вы потеряете свои данные, если ваша модель изменится, и вы используете DropCreateDatabaseIfModelChanges<T>

Чтобы избежать этого:

Не используйте инициализаторы Db в производстве (возможно, кроме CreateDatabaseIfNotExists<T>). Инициализация БД предназначена для облегчения процесса разработки, а не для производственного использования. Что вам нужно, так это новая функция Миграция Entity Framework 4.3. (в настоящее время в бета-версии 1), которая предоставляет функции для автоматической миграции и миграции базы данных с кодовой базой.

Также теперь вы можете установить Инициализатор БД из файла *.config, чтобы вы могли легко переключаться между временем разработки DropCreateDatabaseIfModelChanges на отсутствие инициализатора в производственных конфигурациях.

...