我在我的应用中使用Azure移动服务进行离线同步。我正在同步我的CoreData中的多个表,它们之间有关系ID。
我想通过在CoreData上使用Azure Mobile Service与多个表进行连接来了解是否有解决方案。
也许我错过了什么,但我不知道如何在Core Data中使用Azure Mobile服务建立关系
我的情况是我有一个可以有多个类别的对象。这些对象中的许多对象可以具有相同的类别并且具有许多类别。
假设我有三个表:Category,Category_Object和Object
我希望获得包含特定类别的所有对象。
感谢。
更新
目前,在有人发现有一天Mobile Services SDK可以在Core Data中创建关系之前,这是公认的答案
答案 0 :(得分:0)
我假设Azure移动服务Category
和Object
表分别具有唯一ID,分别为categoryID
和objectID
,以及Category_Object
表还有一个唯一ID,例如linkID
加上categoryID
和objectID
的列。
鉴于该设置,我将在CoreData中创建三个实体:Category
,Object
和Category_Object
,并为它们提供与Azure Mobile Services表匹配的属性。然后定义它们之间的关系:
类别与Category_Object有多对多的关系,比如objects
,与一对一的反向category
。
同样,Object与Category_Object有多对多的关系,比如categories
,与一对一的反向object
。
首先将Category
和Object
表与CoreData同步,然后同步Category_Object
表。使用该表中的categoryID
和objectID
列来获取正确的Category
和Object
。然后填充关系:
newCategory_Object.category = fetchedCategory
newCategory_Object.object = fetchedObject
newCategory_Object.linkID = linkIDfromTable
从那时起,在您的应用中,您可以使用关系来确定哪些Object
属于哪个Category
;无需担心加入表格。
请注意,如果Category_Object表没有categoryID
和objectID
以外的列,那么从理论上讲,您可以省去CoreData中的Category_Object
实体,并且只需要很多关系直接从Category
到Object
。但我认为这将使同步变得更加复杂。