我对DDD相当陌生,这是我的难题:
我必须坚持引用实体B的实体A(让我们考虑两者都是实体根)。UI层通过A_DTO(A的DTO类)收集所有这些信息(在控制器上),将属性从DTO映射到A的新实例,现在供A中对B的引用,UI发送一个id。当我在存储库后面使用ORM时,我想从BRepository查找B的对象实例,在我们正在构建的新A实例上填充引用,最后调用ARepository.save(A instance)。
我这里有几个选择
在UI层(在控制器或某种服务外观中)执行所有这些操作,或者在称为createA的ApplicationService或域Service中执行此操作。哪个选项是正确的??。在这里真正突出的是通过B的ID查找B以获得在A对象上设置引用的过程,这同样可以说是使ORM保持满意或保持域模型一致的过程。关于在B上设置B的引用的过程可能会有一些隐含的业务规则和验证,我认为这些是此处做出决定的驱动力。
同样,如果在创建实体的过程中编织验证,并说构造函数和/或设置函数通过可以通过UI冒泡给客户端的特定错误,则在这里可以进一步推销的将是对验证的考虑。通过回购验证蛋白的水平 还是作为控制器中发生的明确步骤?