В моей базовой модели данных v1 у меня было:
Discussion
relation: Image (to-one)
Image
relation: Discussion (to-one)
В модели v2 у меня теперь есть:
FileObject (abstract)
FileMediaObject: parent FileObject (abstract)
relation: DiscussionFileObject (to-one)
DiscussionFileObject: parent FileObject
relation: FileMediaObject (to-one)
ImageMediaObject: parent FileMediaObject
Объекты DiscussionFileObject и ImageMediaObject (конкретные) заменяют предыдущиеОбсуждение и изображение сущностей один на один.Я использую метод, описанный в Как провести рефакторинг базовой модели данных, чтобы две существующие сущности унаследовали от новой абстрактной сущности для миграции из модели v1 в v2 с использованием модели отображения.Также есть атрибуты, не относящиеся к отношениям (опишите ниже), и они, похоже, переносятся очень хорошо.
Проблема, с которой я сталкиваюсь, заключается в переносе отношений.Например, все унаследованные отношения ImageMediaObject (DiscussionFileObject) заканчиваются тем, что они равны nil - не переносятся должным образом из модели v1.
Вот подробные данные модели отображения:
Value Expression
для сопоставления отношений:
FUNCTION($manager, "destinationInstancesForSourceRelationshipNamed:sourceInstances:" , "image", $source.image)
Value Expression
для сопоставления отношений:
FUNCTION($manager, "destinationInstancesForEntityMappingNamed:sourceInstances:" , "ImageToImageMediaObject", $source.discussion)
Предложения приветствуются.