我正在尝试学习并将DDD应用于一个新项目,所以面对的问题可能是非常基本的问题,但我可能错过了。
有界上下文是否可以包含实体以及同一实体的值对象?
我的问题出现是因为我们通常需要一个ViewModel,除了Model数据之外,它还必须保留更接近View的细节。但是有些情况下,有界上下文可能会使用某个实体作为事务中的引用对象。
例如,让我们假设一个案例。假设我们有Employee上下文,我们也有Employee实体和Department实体。我们将为这两个实体提供ID。
可以在此域中创建/更新部门等。然后我们也可以将员工添加到这些部门。
现在,当我们展示一名员工时,我们希望显示一些可能不需要整个部门实体的部门信息。我们可能需要该部门约50%的细节。
我的问题是,在这种情况下,我们可以为部门设置另一个ValueObject吗?或者会破坏什么?
如果我不这样做,那么我将被迫创造一些如何在较低层次上保持部门细节的水合作用。
我的想法有意义吗?
答案 0 :(得分:1)
您必须明确区分域模型与UI关注。就您的示例而言,部门实体是域概念,而支持显示员工的部门摘要数据显然是UI工件。
部门实体
部门摘要对象
那么你应该把部门摘要课放在哪里?摘要类是应用程序服务/ UI关注点,但持久性机制可能需要它以存储库接口上的结构化方式提供数据(如果您想避免重新打包对象)。
尝试将其放在app服务附近,因为这是它在逻辑上所属的位置。根据您的体系结构,您需要一个对象到对象的映射来将数据从存储库中获取摘要对象。