如果我有数据库版本10,那么我需要为Room迁移制作多少个方法?
我研究了以下示例Google Persistence Migration Sample
我发现基于数据库版本4的可能情况,迁移是可变参数。
public static UsersDatabase getInstance(Context context) {
synchronized (sLock) {
if (INSTANCE == null) {
INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
UsersDatabase.class, "Sample.db")
.addMigrations(MIGRATION_1_2, MIGRATION_2_3, MIGRATION_3_4, MIGRATION_1_4)
.build();
}
return INSTANCE;
}
}
我的问题是,假设我正在使用来自db v1的Room,并且随着时间推移,我的应用程序达到了db v10,那么我需要编写多少迁移方法?
在sqlite中,我们在
onUpgrade
中获取已安装应用程序的当前db版本,然后我们只需通过没有break语句的switch case即可满足所有db升级。但是,我不确定,但据我所知,在room中,我们无法获取已安装应用程序的当前db版本,因此我们编写了所有可能的迁移方法。
但如果我有db v10,写45个方法感觉非常不方便、不合适!
有更好的解决方案吗?