У меня есть начальное состояние, которое мне нужно создать в моей базе данных Room.Я делаю это в обратном вызове onCreate:
val database = Room.databaseBuilder(context, MyDatabase::class.java, "mydatabase").addCallback(object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
super.onCreate(db)
database.myDao().initialize()
}
})
.build()
Это прекрасно работает, пока я не добавлю деструктивную миграцию.Все данные приложений поступают с сервера.В настоящее время нет причин писать миграцию, поскольку приложение синхронизируется при входе в систему.
val database = Room.databaseBuilder(context, MyDatabase::class.java, "mydatabase").addCallback(object : RoomDatabase.Callback() {
override fun onCreate(db: SupportSQLiteDatabase) {
...
})
.fallbackToDestructiveMigration()
.build()
Проблема заключается в том, что инициализация, выполненная в myDao.initialize (), была стерта, и кажется, что хотямиграция была деструктивной, onCreate больше не вызывался.
Есть ли хороший способ справиться с этим без написания пользовательских миграций для каждой версии базы данных?
IE я могу написать свою собственную деструктивную миграцию, которая выполняется длякаждая версия БД, а также вызывает мою функцию initialize ()?