我在Core Data中有一个预订系统,我有一个交易实体,目前与Appointment有关系,还有其他一些事情。预约可由客户进行。约会与服务类型有关系。
我想存储在计算机上进行的所有交易,但是如果客户端被删除,我仍然希望显示客户端的过去交易。同样,如果约会或服务被删除,我仍然希望它显示在过去的交易中。此外,对服务名称所做的任何修改都不应在事务中更改,但应在事务中更改对客户端名称的任何修改。
如何实现这一目标?我知道可以在每个实体中放置“删除”属性而不是实际删除实体,但如果在服务中进行修改,则更改将反映在事务中。
答案 0 :(得分:0)
如果合规性存在问题,您可以保留实体的多个副本。使用创建时间戳,您将拥有一个非常好的唯一ID来识别它们(与另一个属性或您自己的ID方案组合)。
现在,不是修改任何事务,而是创建一个具有相同创建日期的新事务并复制所有数据(但modifiedDate
属性中的不同时间戳)。显示它们时,只显示最新版本。删除时,只需标记为已删除。