android上的同一个数据库是否可以有多个文件dao?

罗密欧·卡瓦略·安图内斯

我想创建多个 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()
        )
    }
} 
埃瓦里斯托克布扎

每个数据库 DAO 都必须有一个@Dao定义操作类(检查文档:https : //developer.android.com/training/data-storage/room#dao

从您的代码中,我假设您已经有一个ContaBancariaDao课程。如果要创建更多 DAO,则需要创建与该类类似的新类。

然后你只需要fun在你的CArchDatabase.

如果您还想添加新实体,请记住entities@Database注释中将它们添加到数组中

@Database(entities = arrayOf(ContaBancaria::class, Other::class), version = 1)
abstract class CArchDatabase : RoomDatabase() {
    abstract fun contaBancariaDao(): ContaBancariaDao
    abstract fun otherDao(): OtherDao

    companion object {
        fun createDatabase(context: Context): RoomDatabase {
            return Room.databaseBuilder(context, CArchDatabase::class.java, "CArchDatabase.db")
                .fallbackToDestructiveMigration()
                .build()
        }
    }

}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

SQLite是否在同一个数据库中支持多个模式?

可以在同一个数据库文件上使用多个并发读/写操作,但在 Sembast 中使用不同的存储吗?

我们可以在同一个 Android Studio 项目中使用多个数据库吗?

在多个数据库中索引同一个表

Istio ServiceEntry,用于将多个外部数据库转到同一个数据库

多个Android应用程序可以访问同一个Firebase数据库吗?

休眠将 2 个 java 文件链接到同一个数据库表

如何处理浏览器中与同一个数据库同步的多个PouchDB实例?

Laravel forge - 多个服务器如何访问同一个数据库

在同一个数据库中安装 wordpress 和 laravel 因为我的主机不允许多个数据库

复制集合并将其粘贴到 MongoDB 上具有不同名称的同一个数据库

在同一个数据库中拥有多种类型用户的最佳方式

想要连接到同一个数据库表但具有不同的值

是否有一个“嵌入式DBMS”来支持同一数据库文件上的多个编写器应用程序(进程)?

在同一个应用程序上创建多个PouchDB数据库是否被认为是错误的设计?

不同的key_len导致同一个数据库(不同的环境)

多个表同一个对象的房间(多语言数据库)

在k8s中的同一个服务帐户上是否可以有多个角色绑定?

在同一个应用程序上拥有多个 package.json 文件是否有好处?

在同一个 Amazon RDS 上创建重复的 SQL Server 数据库

是否可以在同一个变量上使用多个条件来缩短 OR 语句?

一个项目中的两个数据库是否可以有一个实体模型?

我可以为同一个存储库有多个构建管道吗?

如何在多个文本框中显示多条记录但来自同一个数据库 vb.net

多个微服务共享同一数据库SERVER(一个容器,多个数据库)

Firebase/Android - 检查数据库中的数据是否与同一数据库中的另一个数据匹配

AWS:是否可以在同一个 Auto Scaling 组中拥有多个资源?

两个Azure移动服务(.NET后端)共享同一个数据库

如何引用同一个数据库的第二个表