Так как это первый раз, когда вам нужно будет выполнить обновление базы данных, у меня будет соблазн добавить дополнительную схему в схему, которая будет содержать информацию о версии. Если при попытке получить данные возникает ошибка NotFound, вы знаете, что вам нужно будет запустить обновление. Таким образом, вы можете управлять процессом в последующих версиях, не управляя дополнительным файлом.
Чтобы делать накопительные обновления, вы можете использовать тот же механизм. Вы можете сохранить метод, который будет обновлять базу данных с версии v1 до версии 1.2, другой метод перейти с версии 1.2 на 1.3 и т. Д. Метод, который поддерживает процесс обновления, может выглядеть примерно так: псевдокод ...
var currentDbVersion = GetDbVersion();
while(currentDbVersion < currentCodeVersion)
{
switch(currentDbVersion)
{
case 1.2:
RunUpgradeFrom12to13();
break;
case 1.3:
RunUpgradeFrom12to13();
break;
default:
break;
}
currentDbVersion = GetDbVersion();
}
Это должно позволить вам перейти с любой предыдущей версии на текущую без сохранения нескольких путей кода (поскольку обновление с 1.0 до 1.2 никогда не изменится, и вы должны иметь известную стартовую позицию для каждого кумулятивного шага)
Там могут быть гораздо более разумные идеи, но это первое, о чем я подумал.