如果更改migration rules
的{{1}}
deletion rule
没有任何内容
我的初始coredata模型包含一个有关系的实体。此关系的删除规则为managedObjects relationship
。我不得不将此行为更改为cascade
。
因此,我创建了一个Nullify
,但没有任何轻量级迁移,它仍然有效。所以如果我应该添加我的模型的新版本,或者如果更改删除规则(例如从new version of my coredata model
到cascade
)不会影响/需要任何迁移,那么我会更加干净。
有什么建议吗?
答案 0 :(得分:19)
删除规则指定Core Data 在运行时的行为:如果删除了一个对象,则其他关系可能设置为NULL,或者也可能删除相关对象。
因此,我假设删除规则仅存储在Core Data模型中,但不存储在持久存储文件中。
为了验证这一点,我从2个核心数据模型创建了2个存储文件,这些模型具有相同的实体,但具有不同的删除规则。持久性存储NSStoreModelVersionHashes
字典中的metadata
是相同的。
实际上,两个SQLite文件都与“Z_METADATA”表中“Z_UUID”的唯一例外相同,后者是持久性存储文件的NSStoreUUID
。
此外,如果加载的商店的版本哈希值与模型中的哈希值不同,addPersistentStoreWithType:...
将失败。
因此,更改删除规则不应成为问题。