Как синхронизировать данные при использовании EF CodeFirst?
Пишу простенький магазинчик на ASP.NET MVC. Так как вопрос производительности не стоит, в качестве СУБД пока выбрал SQL Server CE. Не дает покоя очень глупый вопрос.
Итак, изначально есть девелоперская версия базы, которая генерируется CodeFirst-ом и автоматически publish-ится вместе с сайтом на сервер, после чего живет там своей жизнью (наполняется). В это время, я допиливаю сайт и структура данных постепенно надстраивается, т.е. добавляются поля и таблицы. К счастью, EntityFramework в последней версии поддерживает простейшие миграции автоматически и в девелоперской копии данные не теряются, но что делать с продакшн копией в которой куча данных?
Ведь при следующем паблишинге на сервер зальется полупустая девелоперская БД? Как настроить студию чтобы она обновляла структуру, но не трогала данные?
Тоже искал ответ на этот вопрос, и ничего удобного не нашел.
Миграции что появились, мне не понравилось — много манипуляций, и есть огромный шанс грохнуть данные.
Пока рассматриваю такой вариант. Сделать свой инициализатор на основе DropCreate, но функцией:
RenameDB -> RenameDB_ver -> CreateDB и TSQL код переноса данных RenameDB_ver -> CreateDB.
Начиная с EF 4.3 изменение структуры вообще не требует манипуляций, кроме небольшой первоначальной настройки. Раньше даже при разработке было жутко неудобно дропать базу каждый раз при малейшем изменении модели. Шанс потерять данные конечно есть, но в простых случаях это случается не так часто и бэкапы помогут.
К счастью, EntityFramework в последней версии поддерживает простейшие миграции автоматически и в девелоперской копии данные не теряются, но что делать с продакшн копией в которой куча данных?
Если вы используете EF CodeFirst migrations, то вы можете сделать любой код по миграции данных.
Ведь при следующем паблишинге на сервер зальется полупустая девелоперская БД? Как настроить студию чтобы она обновляла структуру, но не трогала данные?
Код для миграций я не пишу, EF теперь умеет это делать автоматически (в простых случаях). Понятно что для всего можно написать код, но сайт в разработке и обновляется часто. При таком подходе я код миграций буду писать чаще чем полезную функциональность.
Под паблишингом я понимаю функцию Publish в VS, когда сайт заливается на сервер одной кнопочкой после соответствующей настройки.