我正在尝试使用类似于%Library.RelationshipObject的集合类,因为它管理保存和删除集合中的对象。我希望能够灵活地使用自己的对象执行此操作,因此我不想使用关键字关键字或子类%Library.RelationshipObject类。
我不能在持有此集合的父对象上调用我自己的Save()和Delete()方法,并让它调用我的集合类(并让我的类调用Save()而不是%Save())因为混合可能会直接调用%Save()。
我正在尝试的是在我的集合类和我的父类上使用%OnAddToSaveSet方法。当调用父类%OnAddToSaveSet时,父类将我的集合类放在存储集中。集合类调用会根据需要保存和删除集合中的项目。
在我的集合类中执行此操作的正确方法似乎是使用%OnAddToSaveSet()方法将要保存的集合项添加到存储集中,并使用%Delete删除需要删除的项( ),然后设置
%objTX(5,+oref) = oref
每个已删除的项目。
这是正确的方法吗?我错过了什么吗?这支持吗?我可以将任何不受支持的内容更改为更好的支持吗?
答案 0 :(得分:1)
我相信%OnAddToSaveSet()中的代码应该调用yourObject.%AddToSaveSet()
和yourObject.%RemoveFromSaveSet()
来控制哪些对象应该(或不应该)包含在当前的保存操作中。我相信你也应该能够对不再在集合中的对象调用%Delete(),如果这是你想要实现的行为。
答案 1 :(得分:0)
而不是直接使用%Library.RelationshipObject,更好地使用RelationShips
因此,您可以获得更多可能性,用于控制父母和儿童对象。