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()
。
我正在使用 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()
。