Код: Выделить всё
do {
fetchPagedDataFromNetwork
insertDataIntoDatabase
} while not last page
Обратите внимание, что это будет выполняться в приостанавливаемой сопрограмме, поэтому, насколько я понимаю проблему, ни @Transactional, ни runInTransaction() использовать нельзя.
Могло бы это нужно сделать, и какая последовательность предпочтительнее?
Псевдокод (A), транзакционный блок в контексте
Код: Выделить всё
override suspend fun doWork(): Result {
withContext(Dispatchers.IO) {
try {
database.withTransaction {
// get data from network and and insert paged data into database
}
}
finally {...}
}
}
Псевдокод (B), контекст внутри транзакционного блока
Код: Выделить всё
override suspend fun doWork(): Result {
try {
database.withTransaction {
withContext(Dispatchers.IO) {
// get data from network and and insert paged data into database
}
}
}
finally {...}
}

Подробнее здесь: https://stackoverflow.com/questions/790 ... n-together