软删除是否应该在DDD实体中建模,或者存储库的delete方法是否应该在不增加域模型负担的情况下自行完成此操作?
我不知道这是业务逻辑还是技术问题。
如果是在实体上设置标志或更改状态的域层,这是否意味着任何可以软删除的对象都是实体而不是值对象,因为这意味着对象具有生命周期?
软删除的对象还需要在某些查询中显示,并具有取消删除它们的能力。这是否意味着它是业务逻辑,属于域层?
您还会通过更改实体上的标志并调用存储库上的update方法来处理软删除和取消删除吗?或者在存储库上有单独的delete/undelete方法?
发布于 2019-06-03 17:06:09
这是一个很好的问题,
它属于存储库,从技术上讲,您的客户端并不关心删除是如何完成的。即使您在一家要求保留记录的银行工作,无论是合法的还是合规的,这都可以被视为技术问题。
然而,它也属于模型:在域方面,拥有名为"archived“、"removed”、"deleted“或类似的属性并没有错,当您想要取消删除时,可以将其恢复为false。这类属性可以作为在对象上应用命令的前提条件进行检查,例如在尝试修改存档实体的属性时抛出错误。
有时界限模糊,没有完美的答案,记住没有好的或坏的模型,只有有用的模型。
https://stackoverflow.com/questions/56405417
复制相似问题