在以下示例中显示了一个查询以获取员工详细信息。它具有一个int
参数Id
。还有一个DTO类EmployeeDto
,它也有一个类型为Id
的字段string
。
我将需要创建一个值对象类EmployeeId
,其中包含有关员工ID的一些业务逻辑。实体类Id
的{{1}}将更改为Employee
的类型,而不是EmployeeId
。
string
的{{1}}的类型应为Id
吗?自动映射器用于将EmployeeDto
映射到string
吗?因此,UI可以更轻松地租用列表。string
的属性EmployeeId
的类型应该是主类型string / int吗?在哪里检查参数是否为有效的员工ID(值对象Id
具有验证逻辑)?代码:
GetEmployeeDetailQuery
EmployeeId
答案 0 :(得分:1)
值对象是一个领域概念,因此,在使用其他领域概念的情况下也应使用。
如果数据通过有线方式传给我,我倾向于使用原语,或者在必要时使用其他数据传输对象。这些DTO从来没有任何行为,当我要做想要添加一些方法时,我倾向于使用扩展方法。
与聚合/实体一样,值对象很可能被封装到某种程度,以致于它们可能不适合序列化。