是否可以在一个应用程序中使用多个 Core Data 模型?

Posted

技术标签:

【中文标题】是否可以在一个应用程序中使用多个 Core Data 模型?【英文标题】:Is possible to use several Core Data models inside an app? 【发布时间】:2014-02-10 09:32:55 【问题描述】:

我们有一个已经投入生产的应用,它的核心数据模型需要我们替换。我们的服务器端发生了很多变化,我们希望更新模型以反映这些变化和新功能。

我们讨论的是从头开始创建另一个模型并摆脱旧模型,而不是执行自定义核心数据迁移。我们不需要在我们的实际模型中保留任何现有数据,因为它们都在我们的服务器中可用,因此当用户再次需要它时,应用程序会在请求时下载它。

是否可以创建一个新模型,告诉应用使用它并安全地删除旧模型?有没有其他方法可以解决这个问题?

【问题讨论】:

当然,这是您可以处理的一种选择 【参考方案1】:

您可以拥有任意数量的模型。如果您使用 Apple 的 Core Data Stack 模板,那么您应该更改 managedObjectModel 和 persistentStoreCoordinator 以反映您的模型和文件的新名称。

如果您在本地不需要任何旧数据,那么在准备好具有新模型名称的新模型后修改这两种方法就足够了。

另一种选择是通过新模型版本自动迁移现有数据,但在您的情况下似乎确实需要。

【讨论】:

在更新现有应用方面,只要我指出模型的新名称,我应该没有任何关于核心数据堆栈初始化的问题,真的吗? 如果您使用 Apple 的 Core Data Stack 模板,那么您只需要创建新模型(New File->Data Model),定义新实体、属性和关系,然后创建 NSManagedObject子类(Editor->Create NSManagedObject Sublclass...),然后更新 AppDelegate.m 中提到的这 2 个方法的 URL,以反映新模型,也许是一个新文件,它将起作用。

以上是关于是否可以在一个应用程序中使用多个 Core Data 模型?的主要内容,如果未能解决你的问题,请参考以下文章

在遍历 EF Core 5 中的多个条件包含后查询任何条目

可以将 Core Data 与不同的预填充 sqlite db 一起使用吗?

在 EF Core 中使用多个 dbContext

如何使用同一个连接表创建多个多对多关系 [EF7/Core]

检查 Core Data managedObject 中的多个 nil 值?

在 ASP.NET Core 应用程序中使用多个 HttpClient 对象