Closed demosglok closed 6 years ago
Вопрос, как осуществлять откат изменений? Необходимо сделать при запуске программы выбор: применить все, или откатить все изменения до такой то даты? Или нужно осуществлять откат как то по другому?
откат на 1 шаг осуществляется. если надо на больше шагов, то
Разработать отдельный проект (консольную утилиту) которая будет выполнять миграции - изменения структуры БД. для того что б все изменения структуры оставались в дереве исходников в системе контроля версий.
выглядит как программа, которая проходит по массиву миграций (об этом ниже) и для каждой миграции проверяет, она уже была применена , или нет. если не была - то применяет ее
каждая миграция - это отдельный класс где есть один метод Apply (применить) в котором написаны запросы SQL на изменение структуры БД (добавление, изменение или удаление таблиц, колонок) и метод Revert который возвращает все как было (удаляет добавленные колонки, таблицы и т.п.)
проверять что миграция применена можно например храня список всех примененных миграцией в одной служебной табличке и сверяясь с ней каждый раз. ну и после применения миграции добавлять в эту табличку запись с id миграции.