应该在DDD实体中对软删除进行建模,还是应该由存储库的delete方法自行执行此操作而又不会给域模型带来负担?
我不能说这是业务逻辑还是技术问题。
如果是在实体上设置标志或更改状态的领域层问题,那么这意味着可以被软删除的任何对象都是实体,而不是值对象,因为这意味着该对象具有生命循环?
在某些查询中还需要显示软删除的对象,并具有取消删除对象的能力。这是否表明它是业务逻辑并且属于域层?
您还将通过更改实体上的标志并在存储库上调用update方法来处理软删除和取消删除吗?还是在存储库中有单独的删除/取消删除方法?
答案 0 :(得分:1)
这是一个很好的问题,
它属于存储库,从技术上讲,您的客户端不在乎如何完成删除。即使您在需要记录的银行(合法和合规)中工作,也可以视为技术问题。
但是,它也属于模型:在域方面,拥有称为“已归档”,“已删除”,“已删除”等属性的属性没有错,可以在需要时将其设置为false取消删除。该属性可以作为在对象上应用命令的前提条件进行检查,例如在尝试修改已归档实体的属性时抛出错误。
有时线条模糊,没有完美的答案,请记住,没有好的或坏的模型,只有有用的模型。