DDD:在持久化之前,存储库是否应该验证实体?

时间:2014-10-16 20:01:34

标签: entity domain-driven-design repository-pattern ddd-repositories

简单问题:在持久化之前,存储库是否应该验证实体? Validate =检查所有值是否与规则匹配(例如Name是< 50 chars等)。

1 个答案:

答案 0 :(得分:8)

在DDD中,每个Aggregate都应对其有效性负责。永远不应该有无效状态的对象。即每个聚合体都应该拒绝任何导致无效状态的突变。

引自Jim Bogard撰写的关于该主题的精彩文章Validation in a DDD World

  

简单地说,如果我们控制等式的操作方面,为什么在世界上我们会允许我们的实体进入无效状态?如果我们开始在我们的实体上使用“IsValid”属性,生活会变得复杂得多。