Android 使用 Dagger 2 进行房间迁移

Android Room migration with Dagger 2

我正在使用 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 class:

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

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

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

不过要小心.fallbackToDestructiveMigration()