Domain driven design DDD+;CQRS+;ES:实体或DTO可以是命令的一部分吗?
在DDD、CQRS+EventSourcing应用程序的命令中包含实体或dto可以吗?我认为不应该这样做,至少没有实体应该是命令的一部分 我试着用语言来描述这个问题: 我有一个聚合根A,它可以有一个属性实体列表。属性实体没有自己的聚合根,它只是我的聚合根A的一部分。此外,同一个属性实体不能是另一个聚合根的一部分 我公司的一些开发人员认为,使用Domain driven design DDD+;CQRS+;ES:实体或DTO可以是命令的一部分吗?,domain-driven-design,cqrs,Domain Driven Design,Cqrs,在DDD、CQRS+EventSourcing应用程序的命令中包含实体或dto可以吗?我认为不应该这样做,至少没有实体应该是命令的一部分 我试着用语言来描述这个问题: 我有一个聚合根A,它可以有一个属性实体列表。属性实体没有自己的聚合根,它只是我的聚合根A的一部分。此外,同一个属性实体不能是另一个聚合根的一部分 我公司的一些开发人员认为,使用CreateAggregateA命令保存属性实体对象列表是一种不错的方法。命令处理程序创建聚合,将所有属性实体添加到列表并保存聚合 此外,Aggregate
CreateAggregateA
命令保存属性实体
对象列表是一种不错的方法。命令处理程序创建聚合,将所有属性实体添加到列表并保存聚合
此外,AggregateACreated
事件还包含属性实体列表,这也是不正确的
是否可以将属性实体与位于域中的propertyDto
对象交换(命令和处理程序位于域中)
或者命令应该总是尽可能简单。
例如,要使用一个只包含简单类型(字符串名称、字符串其他参数)的CreateAggregateA
命令,我们需要一个额外的命令CreateProperty
,该命令创建属性实体并将其添加到链接的聚合中
有什么最佳实践吗?我在谷歌上搜索了很多,但没有找到明确的声明或指导
非常感谢您的任何帮助和意见
问候,,
Christian免责声明:我不是DDD专家。我只是分享我对它的了解和一些个人观点
在DDD中:
我希望这会有所帮助。免责声明:我不是DDD专家。我只是分享我对它的了解和一些个人观点
在DDD中:
我希望这会有所帮助DTO、命令/查询及其处理程序属于应用程序层,而事件属于域层。我非常不同意命令处理程序属于应用程序层。它们是域的一部分。否则,可以在命令处理程序的读取端进行查找,这在DDD CQR中是不允许的。这里有解释:但我想我找到了答案。实体不应是命令的一部分,也绝对不应是事件的一部分。通常,该命令是在控制器中根据发送的某些数据创建的