删除核心数据多对多关系的规则

时间:2015-02-09 12:05:16

标签: core-data many-to-many relationship

我知道有很多关于核心数据关系删除规则的问题,但我找不到我的“问题”的答案。

在我的核心数据模型中,CDMTransactionCDMTransactionTag实体(CDMTransaction.tags <<->> CDMTransactionTag.transactions)之间存在多对多关系。每个事务都可以链接到零个,一个或多个标记,然后每个标记都可以链接到一个或多个事务(或者为零,但是保留它没有意义,这就是我正在处理的事情)

因此,当我删除标记(将是“Nullify”删除规则)时,它将从具有此标记的事务中删除。还行吧。 但我想要做的是,当我删除一个事务并且其链接的标记仍未使用时(CDMTransactionTag.transactions.@count == 0),这个/这些标记也应该被删除。

我可以为CDMTransaction实体设置“级联”规则吗?它会删除所有链接的标签,即使它们仍然链接到其他交易,不是吗?

我是否被迫以编程方式执行此操作?

谢谢!

编辑:事实上,我只想在CDMTransactionTag时删除.transactions.@count == 0个实例(所以只有当我删除某些交易时才会检查它,但是当我更改标签时也不应该检查交易)。

1 个答案:

答案 0 :(得分:0)

不知道您是否仍在追求所需范围内的解决方案。

我正在处理类似的问题,并希望分享到目前为止的发现:

  1. 在删除规则中,只有级联才会删除关系(第一个)目标处的对象(例如,您的问题:您的* Tag实体实例)

  2. 它会删除目标对象,即使它们仍“仍链接到其他事务”,除非...,

  3. 除非“链接到其他交易”是具有删除规则被拒绝的关系(第二),

  4. 因为只有拒绝规则才能阻止源对象在规则中的关系(第二个)目标处至少有一个对象时被删除;

  5. 删除规则用于指定如果进行ATTEMPT删除源对象(即紧接可能的源对象删除发生的那一刻)应该发生的情况。

我尚未针对类似问题测试上述设计,但如果以后可能会看到一些正在进行的活动,我将尝试将结果发布。