如果我有db版本10,我将有多少方法可以进行房间迁移?
我查看了以下示例Google Persistence Migration Sample
我发现了基于数据库版本4的可能场景的Migration varargs.
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中获得已安装app的当前db版本,我们只是通过switch case而没有break语句,因此它满足所有db升级.
但是,我不确定,但是afaik,我们无法在室内获得已安装app的当前db版本,我们编写了所有可能的迁移方法.
但是如果我有db v10的话,感觉很不方便,不适合写45种方法!
有没有更好的解决方案?
解决方法:
Suppose I am using Room from the db v1 and by time my app reaches to db v10, how many migration methods will I have to write?
9.
一种方法是:1→2,2-> 3,3-> 4,4-> 5,5-> 6,6-> 7,7-> 8-> 8-. 9和9-> 10.
另一种方法是:1-> 10,2-> 10,3-> 10,……,9-> 10.
我的猜测是第一种方法更受欢迎,因为它更容易开发.对于每个新的数据库版本,您只需创建一个附加对象.
In sqlite, we get current db version of installed app in onUpgrade and we just fall through switch case without break statements so that it satisfIEs all db upgrades.
这将与您在Room中所做的相同数量的代码行,给予或接受.每个case语句都会转换为Migration对象,处理增量升级(例如,3> 4).
But it feels so inconvenIEnt, inappropriate to write total 45 methods if I have db v10!
房间知道如何根据需要“拼接”单个迁移以达到目标版本.因此,在我概述的第一种方法中,如果应用需要从3迁移到10,则Room可以使用3-> 4,4> 5,5-> 6,…,9-> ; 10到达那里.
总结以上是内存溢出为你收集整理的android – 房间数据库迁移全部内容,希望文章能够帮你解决android – 房间数据库迁移所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)