加密核心数据迁移实体名称不匹配问题

Posted

技术标签:

【中文标题】加密核心数据迁移实体名称不匹配问题【英文标题】:Encrypted core data migration entity name mismatch issue 【发布时间】:2015-11-01 02:33:00 【问题描述】:

我正在使用核心数据加密,并且我在 Appstore 中的应用程序的当前版本使用加密数据库。现在我计划发布新版本的应用程序并进行新的实体修改。但是在进行轻量级迁移时,我面临实体名称不匹配问题,系统无法匹配模型和数据库,因此操作失败。

我的发现如下: 在加密时,实体名称通过添加前缀来重命名。

所以如果实体名称为“Country”,则实际结果在db中为“abcCountry”。

轻量级迁移时,模型的实体名称为“Country”,无法与旧版本数据库中的实体名称匹配。

解决办法是什么。我是否需要在新版本中重命名我的实体名称。

【问题讨论】:

【参考方案1】:

为了进行轻量级迁移,核心数据必须能够推断模型映射。

如果你重命名一个实体,它无法判断“新”属性是添加还是重命名。

因此,您必须通过设置renamingIdentifier 来通知核心数据属性已被重命名。

在您的情况下,如果您将属性从“Country”重命名为“abcCountry”,那么您需要修改“destination model”并将新“abcCountry”属性上的renamingIdentifier 设置为“Country”,这样它就可以推断出适当的映射。

Apple's documentation 这个很容易理解。

【讨论】:

我没有重命名任何实体。我的加密框架在内部重命名了实体。 我的理解是老版本的db应该和model匹配才可以开始迁移 对不起,你说的对我来说毫无意义。也许您应该提供实际的源模型和目标模型。 @PraveenVenugopalan 您使用的是什么加密框架?听起来它可能会导致您的问题。

以上是关于加密核心数据迁移实体名称不匹配问题的主要内容,如果未能解决你的问题,请参考以下文章

核心数据模型迁移步骤

迁移复杂的核心数据模型

核心数据迁移删除实体数据

通过迁移将核心数据实体及其数据移动到新的核心数据模型文件中

在不使用其他项目的情况下添加实体框架核心迁移

核心数据迁移:将字段提取到抽象实体子项