                 childPredicate = NSPredicate(format: "%K = %@", inverseEntityName, self)
             }
 
-            try Sync.changes(children, inEntityNamed: childEntityName, predicate: childPredicate, parent: self, parentRelationship: relationship, inContext: managedObjectContext, operations: childOperations, shouldContinueBlock: shouldContinueBlock, objectJSONBlock: objectJSONBlock)
+            try Sync.changes(children, inEntityNamed: childEntityName, predicate: childPredicate, parent: self, parentRelationship: relationship, inContext: context, operations: childOperations, shouldContinueBlock: shouldContinueBlock, objectJSONBlock: objectJSONBlock)
         } else {
             var destinationIsParentSuperEntity = false
             if let parent = parent, let destinationEntityName = relationship.destinationEntity?.name {

            if manyToMany {
                childOperations.remove(.delete)
                if ((childIDs as Any) as AnyObject).count > 0 {
                    guard let entity = NSEntityDescription.entity(forEntityName: childEntityName, in: managedObjectContext) else { fatalError() }
                    guard let childIDsObject = childIDs as? NSObject else { fatalError() }
                    childPredicate = NSPredicate(format: "ANY %K IN %@", entity.sync_localPrimaryKey(), childIDsObject)
                }

        }

        let inverseIsToMany = relationship.inverseRelationship?.isToMany ?? false
        guard let destinationEntity = relationship.destinationEntity else { abort() }
        guard let childEntityName = destinationEntity.name else { abort() }

