【发布时间】:2019-02-13 14:25:36
【问题描述】:
如果我有 db 版本 10,我必须为 Room 迁移使用多少种方法?
我查看了以下示例 Google Persistence Migration Sample
我发现 Migration 可变参数基于数据库版本 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 版本,我们只是通过 switch case 而不使用 break 语句,以满足所有 db 升级。
但是,我不确定,但是 afaik,我们无法在房间中获取已安装应用程序的当前 db 版本,我们编写了所有可能的迁移方法。
但是如果我有db v10,写总共45个方法感觉很不方便,不合适!
有没有更好的解决方案?
【问题讨论】:
标签: android database sqlite android-room