Domain driven design DDD、总量和实体
我有以下域对象结构Domain driven design DDD、总量和实体,domain-driven-design,ddd-repositories,Domain Driven Design,Ddd Repositories,我有以下域对象结构 Invoice - List<Items> - Service 若我理解正确,在这个场景中,发票是聚合的,项目是实体,服务是项目的价值对象 若我需要向数据库添加新服务,会发生什么。我是否应该创建一个新的服务类,然后为该场景聚合,并拥有自己的存储库?服务是否可以独立存在看起来他们可以根据你上面所说的 如果需要向数据库添加新服务(我假设服务是独立的),则需要创建服务聚合根。还将有一个服务存储库等用于添加它 聚合根和存储库始终是一对一的。他们的关键是了解
Invoice
- List<Items>
- Service
若我理解正确,在这个场景中,发票是聚合的,项目是实体,服务是项目的价值对象
若我需要向数据库添加新服务,会发生什么。我是否应该创建一个新的
服务
类,然后为该场景聚合,并拥有自己的存储库?服务是否可以独立存在看起来他们可以根据你上面所说的
如果需要向数据库添加新服务(我假设服务是独立的),则需要创建服务聚合根。还将有一个服务存储库等用于添加它
聚合根和存储库始终是一对一的。他们的关键是了解你所在领域的聚合根是什么。一旦您正确地定义了这些,存储库将是自定义的
请注意,如果您在上面的示例中需要向发票中添加类似于新项目的内容,则必须通过发票存储库执行此操作。原因很简单,因为项是一个实体,而不是聚合根。服务可以独立存在吗?-看起来他们可以根据你上面所说的
Invoice
- List<Items>
- Service
如果需要向数据库添加新服务(我假设服务是独立的),则需要创建服务聚合根。还将有一个服务存储库等用于添加它
聚合根和存储库始终是一对一的。他们的关键是了解你所在领域的聚合根是什么。一旦您正确地定义了这些,存储库将是自定义的
请注意,如果您在上面的示例中需要向发票中添加类似于新项目的内容,则必须通过发票存储库执行此操作。原因很简单,因为Item是一个实体,而不是聚合根。Invoice
Invoice
- List<Items>
- Service
-名单
-服务
首先要注意的是,这是对结构的描述。DDD中聚合的动机不是结构,而是行为。聚合的作用是确保对结构所做的修改符合业务规则
若我理解正确,在这个场景中,发票是聚合的,项目是实体,服务是项目的价值对象
很接近,但是术语有点模糊(对不起)。如果此结构表示聚合边界内的状态,则发票
将是充当聚合根的实体,聚合本身通常称为发票聚合
项和服务可能是值类型,也可能是实体。你需要更多的信息才能确定。从名称(应该取自普遍存在的语言)猜测,它们可能都是实体ServiceName
或ServiceId
更可能是值类型
重要的一点是:如果这些是实体,则它们的生命周期从属于发票的生命周期。换句话说,发票的“级联删除”将包含项目和服务
若我需要向数据库添加新服务,会发生什么。我是否应该创建一个新的服务类,然后为该场景聚合,并拥有自己的存储库
稍微向后:持久性组件支持域模型,而不是相反
如果服务是一个实体,并且该实体的生命周期独立于任何一个发票(例如,如果两个不同的发票可以引用“相同”的服务),则该服务实体应处于与发票不同的聚合中,并且发票的状态包含对该服务的引用,而不是服务本身
如果这是正确的模型,那么服务聚合将拥有自己的存储库。Invoice
-名单
-服务
首先要注意的是,这是对结构的描述。DDD中聚合的动机不是结构,而是行为。聚合的作用是确保对结构所做的修改符合业务规则
若我理解正确,在这个场景中,发票是聚合的,项目是实体,服务是项目的价值对象
很接近,但是术语有点模糊(对不起)。如果此结构表示聚合边界内的状态,则发票
将是充当聚合根的实体,聚合本身通常称为发票聚合
项和服务可能是值类型,也可能是实体。你需要更多的信息才能确定。从名称(应该取自普遍存在的语言)猜测,它们可能都是实体ServiceName
或ServiceId
更可能是值类型
重要的一点是:如果这些是实体,则它们的生命周期从属于发票的生命周期。换句话说,发票的“级联删除”将包含项目和服务
若我需要向数据库添加新服务,会发生什么。我是否应该创建一个新的服务类,然后为该场景聚合,并拥有自己的存储库
稍微向后:持久性组件支持域模型,而不是相反
如果服务是一个实体,并且该实体的生命周期独立于任何一个发票(例如,如果两个不同的发票可以引用“相同”的服务),则该服务实体应处于与发票不同的聚合中,并且发票的状态包含对该服务的引用,而不是服务本身
如果这是正确的模型,那么服务聚合将有自己的存储库。这样服务就可以与mult共享