Недавно я программировал с использованием Entity Framework 4.1 Code First, и мне очень нравится его разработка, но, имея только конечный план и быстро меняющийся список функций, я постоянно изменяю класс / базу данных в соответствии с потребностями приложений.
В разработке нет живых данных, и я могу легко удалить всю базу данных, чтобы она воссоздалась с новой схемой, однако, очевидно, что при живых - это очень плохо!
Единственные решения, которые я вижу, - это либо удалить таблицу метаданных и вручную синхронизировать базу данных, либо в основном удалить и повторно заполнить.
Я лично предпочитаю первый метод, так как думаю, что будет гораздо проще добавить столбец / таблицу, чем воссоздать и перенести данные, но, если я что-то пропустил, это полностью отходит от Code First.
Таким образом, вопрос на самом деле заключается в том, является ли Code First только начальным этапом разработки и какова хорошая стратегия управления EF для производственной среды?
источник
Ответы:
Мое мнение таково, что автоматическое создание базы данных Code First предназначено только для разработки. Я ответил на аналогичные вопросы о переполнении стека, где я описал как обновить базу данных, так и почему автоматическая функциональность плоха в работе:
Обновление базы данных является полуавтоматической задачей. За этим не должно быть автоматической непроверенной магии - более того, в настоящее время в EF 4.1 нет такой магии (есть только некоторые сведения о функциях, над которыми работает команда ADO.NET).
Вы также можете проверить этот вопрос, чтобы лучше понять, как обновляются веб-сайты.
источник
Поддерживать сценарии обновления .
В самой базе данных ведите таблицу, в которой содержится запись с версией схемы.
Когда ваше приложение запускается, оно обнаруживает версию по сравнению с версией, которая должна использоваться двоичными файлами. Если он отличается, он выполняет (или просит пользователя) сценарии обновления.
Не забудьте сначала сделать резервную копию базы данных.
источник
Вопрос как-то ошибочен в том, что он устанавливает связь между моделью программирования и средой выполнения, где ее нет.
Сначала Code - это драйвер скорости разработки, который не связан с системой времени исполнения.
В производстве у вас будет правильно настроен параметр конфигурации, который запрещает среде выполнения возможность удаления / обновления модели БД.
источник