2010-06-11 1 views
4

Пример: У меня есть Департамент и Сотрудник. Департамент имеет отношение Nullify к многим сотрудникам, а Сотрудник имеет обратную связь с одним Департаментом.Когда мое правило удаления отношений установлено на Nullify, будет ли исключена и обратная связь?

Теперь я удаляю отношения с Сотрудником. Так что скажем, что Отдел маркетинга больше не ссылается на Джо Стивенса.

1) Совершает ли Джо Стивенс связь с отделом маркетинга при запросе своего отдела? Или Core Data обрабатывает это автоматически, а также «аннулирует» это?

2) Имеет ли значение, какое правило удаления указано на стороне сотрудника? Скажем, это был Каскад. Департамент устранил отношения с Работником. Я считаю, что правило удаления Employee не имеет значения в этом случае, верно?

ответ

13

Правило удаления управляет тем, что происходит с объектом на другом конце отношения, когда объект, содержащий правило, удаляется.

Итак:

A<-(cascade)->>B 
B<<-(nullify)->A 

Удаление вызывает удаление всех связанных B. Однако удаление любой одиночный один B просто вызывает забыть о конкретной B.

Таким образом, правило удаления всегда релевантный объекту, на который он нацелен, поскольку целевой объект является целым пунктом правила удаления. Это особенно верно, когда объекты имеют множественные отношения.

A<-(cascade)->>B 
B<<-(nullify)->A 
C<--(cascade,required)-->>B 

Объект C блокирует каскадное удаление любых объектов B, которые он также держит, независимо от того, что хочет. (A в этом случае аннулирует.)

Вы не должны думать о правилах удаления с точки зрения реального программирования, а скорее в отношении системы реального мира, которую вы пытаетесь моделировать. Подумайте о взаимосвязи реальной системы, а затем установите правила удаления, чтобы имитировать их. В этом случае мы будем имитировать фактические организационные правила компании.

+1

Отличное объяснение. Должно зайти в apple docs;) – dontWatchMyProfile

+0

Используя ответ TechZen, так как B не может быть удален (т. Е. Требуется C), doest означает, что A забывает о B, а затем A удаляется? –

Смежные вопросы