Domain driven design DDD-应如何处理查找实体?
我们正在进行一个使用DDD的项目,但却被困在如何处理查找实体上。 例如,我们有一个名为“Customer”的聚合,实体“Customer”也是聚合根。实体“Customer”具有属性“CustomerTypeID” 但是我们还有一个实体“CustomerType”,它代表所有现有的客户类型(ID和描述)。将有一个管理功能,允许用户维护客户类型(即添加新的客户类型等) 请注意,我说的不是更改特定客户的客户类型,而是维护客户类型列表 我为这个冗长的故事道歉,但以下是我的问题:Domain driven design DDD-应如何处理查找实体?,domain-driven-design,aggregate,aggregateroot,Domain Driven Design,Aggregate,Aggregateroot,我们正在进行一个使用DDD的项目,但却被困在如何处理查找实体上。 例如,我们有一个名为“Customer”的聚合,实体“Customer”也是聚合根。实体“Customer”具有属性“CustomerTypeID” 但是我们还有一个实体“CustomerType”,它代表所有现有的客户类型(ID和描述)。将有一个管理功能,允许用户维护客户类型(即添加新的客户类型等) 请注意,我说的不是更改特定客户的客户类型,而是维护客户类型列表 我为这个冗长的故事道歉,但以下是我的问题: 我认为“Custom
- 我认为“CustomerType”是一个实体而不是一个值对象,对吗
- “CustomerType”应该在聚合“Customer”中,还是应该在它自己的聚合中,因为我们将在特定客户的上下文之外访问和维护它
- 如果这个实体和任何其他作为基本查找实体(如客户状态、产品类型等)的实体应该单独聚合(并且是这些聚合的聚合根),那么我最终不会拥有数百个存储库吗?(因为每个聚合根都有自己的存储库)
Public Class Customer
Inherits EntityBase(Of Integer)
Implements IAggregateRoot
Public Property CustomerID As Integer
...
Public Property CustomerType As CustomerType
...
及
公共类CustomerType
继承EntityBase(整数的)
实现IAggregateRoot
Public Property CustomerTypeID As Integer
Public Property CustomerTypeDescription As String
或者类“Customer”中的属性应该是CustomerTypeID吗
关于第3点,聚合和有界上下文之间有什么区别?“Customer”聚合(其中“Customer”是聚合根)是否也包含仅存在于Customer上下文中的任何实体和值对象,而不是一个有界上下文
CustomerType
具有标识和相关描述,所以它是一个实体Customer
类是否具有CustomerType
属性或CustomerTypeId
属性取决于它是否需要访问CustomerType
上的其他属性。无论哪种方式,CustomerType
都是拥有自己存储库的自己的实体我正试图在注释中添加一些代码,但由于这是我的第一篇文章,我仍在努力,所以我在原始查询的底部添加了一个部分。请查看>,或者类“Customer”中的属性应该是CustomerTypeID吗?这取决于客户实体是否需要访问客户类型的描述。>聚合上下文和有界上下文之间的区别是什么?