MDriven:如何在内部删除检查前处理依赖以完成对象删除?
MDriven中
PreDelete()执行顺序引发的删除验证问题 问题现象
MDriven的PreDelete()方法设计用于执行特殊清理操作或阻止对象删除,但实际执行流程中,内部删除检查会优先于PreDelete()触发,抛出InvalidOperationException异常:
Cannot delete object, the relation Class.Linkrole is not empty
这直接导致我无法在PreDelete()中预先处理依赖对象的删除逻辑。
具体业务场景
Agreement类与Lookup、Counter均为复合多链接关系Counter类与Lookup类为聚合多链接关系
删除Agreement时,内部检查会验证所有复合链接对象是否可删除,但此时Lookup对象仍存在,导致Counter因关联关系无法被删除。我原本计划在PreDelete()中先强制删除Lookup,再删除Counter,但内部检查先报错,完全没机会执行清理逻辑。
优化建议
合理的执行顺序应该是先调用PreDelete()完成前置清理,再执行内部删除检查,否则这类需要先处理依赖的删除场景根本无法实现。
内容的提问来源于stack exchange,提问作者Kjell Rilbe
相关产品推荐
相关产品推荐

