Olivier Patry
11/10/2024, 12:13 PMRoomDatabase.withTransaction
is defined in RoomDatabase.android.kt
and not available commonly?
Is the db.useWriterConnection { it.immediateTransaction }
the way to go in shared code? It feels like a workaround, right?Olivier Patry
11/10/2024, 12:16 PM@Transaction
in Dao isn't suitable in my casePhuc YNWA
04/18/2025, 4:39 AMTransactor.withTransaction
(https://android.googlesource.com/platform//frameworks/support/+/refs/heads/androidx-main/[…]roidx/room/Transactor.kt?autodive=0%2F%2F%2F%2F%2F%2F%2F), you can get it as a receive parameter in useWriterConnection
block.
suspend fun <R> RoomDatabase.useWriterConnection(block: suspend (Transactor) -> R): R =
withContext(getCoroutineScope().coroutineContext) { useConnection(isReadOnly = false, block) }
.also { invalidationTracker.refreshAsync() }
For example:
database.useWriterConnection {
it.withTransaction(Transactor.SQLiteTransactionType.IMMEDIATE) {
userDao.insertAll(entities)
}
}
Olivier Patry
04/23/2025, 5:12 PM