Domain driven design DDD存储库和实体

Domain driven design DDD存储库和实体,domain-driven-design,ddd-repositories,Domain Driven Design,Ddd Repositories,我有一些大实体。实体具有“Id”、“状态”等属性。 我有此实体的存储库。 我想更改一个实体中的状态。 我应该获取整个实体、更改属性状态并在存储库中使用save方法,还是应该在存储库中使用方法ChangeStatus(id,newStatus)?可能您不需要域模型。您可以尝试直接使用SQL更新数据库 当且仅当您需要雇佣专家了解业务时,您才需要域模型。 否则的话,就是太贵了 顺便说一句,如果您有大型实体类,其中包含在大多数操作中不需要的数据,那么您知道您没有正确定义 有界上下文的最佳定义是Evans

我有一些大实体。实体具有“Id”、“状态”等属性。 我有此实体的存储库。 我想更改一个实体中的状态。 我应该获取整个实体、更改属性状态并在存储库中使用save方法,还是应该在存储库中使用方法ChangeStatus(id,newStatus)?

可能您不需要域模型。您可以尝试直接使用SQL更新数据库

当且仅当您需要雇佣专家了解业务时,您才需要域模型。 否则的话,就是太贵了

顺便说一句,如果您有大型实体类,其中包含在大多数操作中不需要的数据,那么您知道您没有正确定义

有界上下文的最佳定义是Evans:

特定模型的限定适用性。边界环境让团队成员对什么必须保持一致以及什么可以独立发展有一个清晰和共同的理解


也就是说:您必须在每个术语都有明确含义和有限责任的上下文中拆分领域专家知识。如果这样做,您将获得具有高内聚性的小型类型和模块,而不是前者。存储库中的ChangeStatus(id,newStatus)使实体毫无意义。我的意思是,在存储库中使用ChangeStatus(id,newStatus),我不会让整个实体从多个表中构造它,我只更改一个属性。但业务规则泄漏到持久性层。