我是核心数据新手,谁能让我知道版本控制和数据迁移之间的区别。当我们进行版本控制和数据迁移时?模型版本控制与数据管理有什么区别?
回答
版本用途类似于版本上的应用程式,以指示除了在核心数据演变的代码是数据模型,即在.xcdatamodel文件中定义的实体,实体属性和关系的相同的基本代码的不同进化变化。
迁移是您对持久性存储中的最终用户现有数据执行的操作,以便格式化/构建存储以使用新版本的数据模型。
它的工作原理是这样的:
你发布你的应用程序的1.0版本,它与一个版本1.0以及数据模型。最终用户然后使用您的应用程序并使用数据模型1.0将其数据保存为格式化/结构化的持久性存储。
然后,您发布应用的2.0版,并在此过程中对数据模型进行了更改,例如您更改属性名称,添加属性或添加实体。您可以将数据模型版本化为2.0(实际版本名称是任意的)。然后,您可以提供自动迁移或手动迁移,以便可以将1.0持久性存储文件中的最终用户数据重新格式化为数据模型2.0格式。
对核心数据模型所做的每一项更改都会生成新版本。每一次改变。
核心数据没有一个模型的概念比另一个模型更新,但它只是知道它们是不同的。核心数据不会使用由您拥有的模型版本创建的商店(磁盘上的数据库)。
这就是迁移进来的地方,这只是一个告诉Core Data如何从一个模型到另一个模型的过程,数据存储在由特定模型创建的数据库中。核心数据可以尝试猜测(自动迁移),对于简单的更改可以正常工作,但您可以手动创建更复杂的迁移,仔细从一个模型版本中提取数据,并将其放置到新模型版本的数据库中。
你什么时候创建新的模型版本?将具有Core Data模型的应用程序发送到App Store之后,应立即为更改创建新的模型版本,以便原始模型版本可以为App Store版本更高版本的人员创建迁移路径。
什么时候应该创建迁移?基本上,只要您向商店发运新版本,就需要从商店中的任何早期型号(因此可能在某人的手机上)到最新的数据模型版本找出一条路径。如上所述,如果更改很简单,您可以使用自动版本,但始终进行测试(保持每个应用商店版本均可访问,以便您可以测试加载旧版本,然后迁移到新版本)。
顺便说一句,一个可接受的计划就是删除现有的数据库,如果模型已经改变了,只要你可以把某些用户以某种方式返回到数据库中(或者如果用户从未放过任何东西,就像在缓存数据库中一样)。
- 1. Android内存管理与Linux内存管理有什么区别?
- 2. 数据模型和对象模型有什么区别?
- 3. 版本与集成版本有什么区别?
- 4. MVC模型,数据和数据库有什么区别?
- 5. 数据模型和数据结构有什么区别?
- 6. 数据设计和数据模型(ERD)有什么区别
- 7. Rails数据类型有什么区别?
- 8. 数据模型版本管理和关系管理
- 9. 调和管理::控制器与模型::
- 10. 逻辑数据模型和概念数据模型有什么区别?
- 11. Json.Net版本有什么区别?
- 12. Linux内核版本有什么区别?
- 13. Qt Creator版本有什么区别?
- 14. Orientdb版本有什么区别?
- 15. 事务管理器和数据库管理器有什么区别?
- 16. 有没有3D模型/ 3D数据的版本控制系统?
- 17. 托管bean和弹簧控制器有什么区别?
- 18. ASP和SaaS模型有什么区别?
- 19. ERD和上下文数据模型有什么区别?
- 20. 繁殖与处理有什么区别?
- 21. 版本控制(SVN)和管理样本数据?
- 22. 模式与路径有什么区别?
- 23. 关系与非关系数据建模 - 有什么区别
- 24. 自定义模型管理器方法和QuerySet方法有什么区别?
- 25. VSE版本和Vyatta Core版本之间有什么区别AMI
- 26. Qt调试版本和Qt发布版本有什么区别?
- 27. “软件版本”和“平台版本”有什么区别?
- 28. “运行时版本”和“版本”有什么区别?
- 29. 免费版本和检查版本有什么区别?
- 30. MD5二进制模式和文本模式有什么区别?
还有一件事,如果我们删除一个实体,那么我们应该手动迁移数据或类似的东西,我可以有一个更简单的示例模型示例。我有很多疑问。新版本意味着相同的文件.xcmodel,当我们创建一个新模型.xcmodelId时,我们需要手动将数据迁移到另一个将由第二个模型创建的sqlite。合理?或者我搞砸了? – Vijay
删除实体是一个简单的迁移。它可以使用自动迁移来完成。只需创建一个新版本并编辑模型并将其设置为当前版本即可。 – Sandeep
听起来不错。但是,当手动迁移出现时,我们使用手动迁移进行什么样的更改。我们怎么知道我们应该使用手动migartion ?. – Vijay