我想为 dbflow (v4+) 编写一个迁移脚本。我想删除所有以前的表,然后从头开始构建所有内容。目前我发现我们可以做到这一点的唯一方法是:
@Migration(version = 2, database = AppDatabase.class)
public static class Migration2 extends BaseMigration {
@Override
public void migrate(DatabaseWrapper database) {
ArrayList<ModelAdapter> modelAdapters = new ArrayList<>();
// Old tables
modelAdapters.add(FlowManager.getModelAdapter(Events.class));
modelAdapters.add(FlowManager.getModelAdapter(Notes.class));
// New table
modelAdapters.add(FlowManager.getModelAdapter(User.class));
for (ModelAdapter modelAdapter : modelAdapters) {
database.execSQL("DROP TABLE IF EXISTS " + modelAdapter.getTableName());
database.execSQL(modelAdapter.getCreationQuery());
}
}
}
我不喜欢这种方法,因为我们必须手动提及所有新旧表。有没有更好的方法来做到这一点。我的数据库发生了显着变化,因此删除所有表似乎是唯一的选择。