【问题标题】:Android Room migration with Dagger 2使用 Dagger 2 迁移 Android 房间
【发布时间】:2022-01-13 11:41:13
【问题描述】:

我正在使用 Android Room 2.3.0 和 Dagger 2。

提供数据库实例的DBModule.kt如下所示:

@Singleton
@Provides
open fun provideDatabase(context: Context): AppDatabase {
    return Room.databaseBuilder<AppDatabase>(
        context.applicationContext, AppDatabase::class.java,
        DATABASE_NAME
    ).fallbackToDestructiveMigration().build()
}

AppDatabase.kt类:

@Database(
    entities = [User::class],
    version = 1,
    exportSchema = false
)
abstract class AppDatabase : RoomDatabase() {
    abstract fun userDao(): UserDao
}

现在我需要在用户实体中添加一些新列并增加数据库版本。如果我无法从 AppDatabase.kt 访问 Room.databaseBuilder,如何在 AppDatabase.kt 中进行迁移并调用 .addMigrations()

【问题讨论】:

    标签: android sqlite android-room dagger


    【解决方案1】:

    只需将迁移添加到 DBModule.kt 类,然后再调用 .build()

    注意.fallbackToDestructiveMigration()

    【讨论】:

    • 谢谢@Guido。我在考虑同样的想法——在 DBModule.kt 类中保持迁移。我不确定这个想法有多好,但没有其他选择。除非将 DB 初始化从 DBModule.kt 移到 AppDatabase.kt。
    猜你喜欢
    • 2020-05-17
    • 1970-01-01
    • 2018-05-13
    • 2021-08-13
    • 1970-01-01
    • 2021-06-22
    • 1970-01-01
    • 1970-01-01
    • 2019-08-16
    相关资源
    最近更新 更多