我有一个关于将模块添加到领域配置以限制Realm仅包含类子集的问题。我知道可以通过定义自定义RealmModule然后在领域配置中指定该模块来完成。
我现在面临的情况是我已经在我的聊天应用程序的生产版本中定义了两个领域(比如领域A和B)。领域A存储从我的REST服务器获取的数据,而领域B存储与聊天线程相对应的数据。我的应用程序中有12个模型类。这12个模型中的11个用于存储REST服务器数据,而剩余的1个模型用于存储聊天线程数据。
到目前为止,我还没有意识到可以使用RealmModule类来限制可以包含在特定Realm的模式中的模型。所以目前,我的生产应用程序有两个领域,所有12个模型都在这两个领域的架构中使用。在我的应用程序的下一个版本中,我对几个与REST数据相对应的模型进行了一些更改,并编写了迁移来解决这些更改。我现在面临的问题是,即使我只更改了与REST数据相对应的模型,我也必须为REST领域和聊天线程Realm提供迁移,因为这两个领域的模式都包含所有类。
我正在添加用于在我的生产应用中实例化域配置的代码以及包含RealmModule之后的当前开发版本
我的生产代码:
RealmConfiguration realmConfiguration = new RealmConfiguration.Builder(mContext)
.name(realmName + ".realm")
.schemaVersion(DB_SCHEMA_VERSION)
.encryptionKey(byteKey)
.build();
添加RealmModule后的代码:
RealmConfiguration restRealmConfiguration = new RealmConfiguration.Builder(mContext)
.name(realmName + ".realm")
.modules(new RestRealmModule())
.schemaVersion(REST_DB_SCHEMA_VERSION)
.migration(new RestDBMigration())
.encryptionKey(byteKey)
.build();
我的问题是,我可以安全地创建两个RealmModule类,一个包括所有REST模型类,一个包括聊天线程模型类,并部署这些更改,而不会在从当前生产应用程序转换到此过程中出现任何问题新版本?
当我部署指定RealmModules的应用程序的新版本时,Realm将如何处理生产中已存在的.realm文件(包含模式中的所有模型),从而限制域模式仅处理所有模块的子集模特课?
如果我的方法不正确,那么有人可以解释我应该如何解决这个问题?
感谢。