【发布时间】:2021-08-23 15:02:40
【问题描述】:
我想创建多个 DAOS 文件以更好地组织项目,即使我只有一个数据库。当我尝试按照这些思路做某事时,它会起作用:
@Database(version = 1, entities = [ContaBancaria::class])
abstract class CArchDatabase : RoomDatabase() {
abstract fun contaBancariaDao(): ContaBancariaDao
companion object {
fun createDatabase(context: Context): RoomDatabase {
return Room.databaseBuilder(context, CArchDatabase::class.java, "CArchDatabase.db")
.fallbackToDestructiveMigration()
.build()
}
}
}
但是,当我尝试这样的事情时,它不起作用:
@Database(version = 1, entities = [ContaBancaria::class, entity1, entity2,entity3 ....])
abstract class CArchDatabase : RoomDatabase() {
abstract fun contaBancariaDao(): ContaBancariaDao
abstract fun dao1(): dao1
abstract fun dao2(): dao2
abstract fun dao3(): dao3
abstract fun dao4(): dao4
.
.
.
companion object {
fun createDatabase(context: Context): RoomDatabase {
return Room.databaseBuilder(context, CArchDatabase::class.java, "CArchDatabase.db")
.fallbackToDestructiveMigration()
.build().dao1().dao2().dao3()....
}
}
}
我正在使用 koin 单例来创建我的数据库
val cacheDataModule = module {
single { CArchDatabase.createDatabase(androidContext()) }
factory<ContaBancariaCacheDataSource> {
ContaBancariaCacheDataSourceImpl(
contaBancariaDao = get()
)
}
}
【问题讨论】:
-
.dao1().dao2().dao3()....你到底想在这里完成什么? -
这只是一个尝试,我的目标是拥有一个我的数据库实例,我可以在其中拥有多个@Daos 接口,这样就不会拥有一个包含超过 1000 行的大文件和多个查询和在多个表中插入我每个表都有一个文件。
-
如果你使用 Koin,所有这些都进入 Koin 模块。如果您不太了解 Koin,请不要使用 Koin(或者学习如何使用它,我猜,无论您喜欢哪种解决方案)。
标签: android kotlin android-room koin