Использование DropCreateDatabaseIfModelChanges в производственной среде

Я только начал изучать .NET MVC, так что это может быть глупый вопрос, но я еще не нашел хорошего ответа.

Я следую подходу Code First, используя Entity Framework для создания моей базы данных для меня. Я включил следующее в свой метод Application_Start(), чтобы разрешить мне редактировать мою базу данных, внося изменения в мои объекты Model.

Database.SetInitializer<ContactManagerDB>(new DropCreateDatabaseIfModelChanges<ContactManagerDB>());

Мне просто интересно, что произойдет, если я подтолкнул это приложение к рабочей среде, а затем внес несколько изменений в мои модели, а затем обновил приложение? Будет ли это действительно снижать и воссоздавать базу данных в рабочей среде?

Какая наилучшая практика для продвижения изменений в производство? используя подход Code First?

Ответы

Ответ 1

DropCreateDatabaseIfModelChanges следует использовать только на ранней стадии разработки, а не на производственной машине. Если вы нажали на производственную машину и внесли изменения схемы, вы потеряете все свои данные.

Ответ 2

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

Ответ 3

Сначала код не имеет возможности обновлять вашу базу данных, сохраняя ваши данные целыми.