Каков наилучший способ управления переносом базы данных комнаты? - PullRequest
0 голосов
/ 29 ноября 2018

При добавлении новой таблицы мне нужно управлять миграцией вручную, что я и сделал следующим образом:

  private static final Migration MIGRATION_2_1 = new Migration(DbConfig.Version_SchoolEvent_2, DbConfig.Version_NewsAnnouncement_1) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL(NEWS_ANNOUNCEMENT);
    }
};
private static final Migration MIGRATION_3_1 = new Migration(DbConfig.Version_PublicNotification_3, DbConfig.Version_NewsAnnouncement_1) {
    @Override
    public void migrate(SupportSQLiteDatabase database) {
        database.execSQL(NEWS_ANNOUNCEMENT);
    }
};

и затем

при создании базы данных

  public static NewsAnnouncementDatabase getDatabase(final Context context) {
    try {
        if (INSTANCE == null) {
            synchronized (NewsAnnouncementDatabase.class) {
                if (INSTANCE == null) {
                    INSTANCE = Room.databaseBuilder(context.getApplicationContext(),
                            NewsAnnouncementDatabase.class, DbConfig.Db_WebSchoolRx)
                            // Wipes and rebuilds instead of migrating if no Migration object.

                            .allowMainThreadQueries()
                            // .fallbackToDestructiveMigration()
                                .addMigrations(MIGRATION_2_1, MIGRATION_3_1)
                            .addCallback(sRoomDatabaseCallback)
                            .build();
                }
            }
        }

    } catch (Exception ex) {
        Log.i("Instance of Database", ex.getMessage());
    }
    return INSTANCE;
}

Iдумал сохранить массив объектов миграции в строку и добавить весь массив объектов миграции.Но потом мне было трудно управлять, когда число столов растет.Есть ли лучший способ добавить объект миграции?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...