それはグラフィカルなデータモデルエディタで、すぐに明らかではないですが、各recipocal関係すなわち、各
<-->
は...本当に、自身のDELETを持つ2つの独立した関係各ですeルール。削除ルールを持つエンティティのオブジェクトが削除されると、削除ルールがアクティブになります。だから、
、データモデルエディタであなたが関係を持つ2つのエンティティAlpha
とBeta
持っている場合:
Alpha.betas<-->>Beta.alpha
を...そしてあなたが本当にそうのような2体の関係を持っている:
Alpha.betas--(delete rule)-->>Beta.alpha
Beta.alpha--(delete rule)-->Alpha.betas
あなた決してこのような削除ルールを設定したい:
Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(cascade)-->Alpha.betas
...いずれかのBeta
インスタンスを削除すると、すべての関連するBeta
オブジェクトの削除をトリガーする関連するAlpha
オブジェクトが削除されるためです。データモデルの詳細によっては、相互にカスケードすると、偶然大きなデータが削除される可能性があります。あなたが本当に欲しい
は次のとおりです。
今
Alpha.betas--(cascade)-->>Beta.alpha
Beta.alpha--(nullify)-->Alpha.betas
、あなたがAlpha
オブジェクトを削除するとき、それはすべての関連するBeta
オブジェクトを削除します。
カスケードがブロックされている場合は、通常、必要な関係に問題があります。データモデルの詳細なしではっきりと伝えることはできません。
簡単な質問ですが、 '[context deleteObject:EntityA];を実行すると、最後のスナップショットのようにすべてのベータ版が正しく削除されます。 –
削除をブロックするものがないと仮定します。 – TechZen
しかし、すべてのベータ版を削除するとどうなりますか?そのような場合にAlphaを自動的に削除する方法は? – shoumikhin