CQRS,应该命令/事件参数包含我们需要的一切
本文关键字:我们 包含 参数 命令 事件 CQRS | 更新日期: 2023-09-27 18:04:02
我的应用程序使用CQRS,我有一个情况,我有一个命令"AddApplicationToGroupCommand"与以下参数:
class AddApplicationToGroupCommand
+ Guid GroupId; // AggregateRootId
+ string ApplicationName;
这个命令通过我的聚合,然后发布一个事件;在我的EventHandler中处理,并最终保存在我的数据库中。
我的问题是关于最佳实践的。最后我想要的是我的EventHandler在表应用程序中插入以下参数Table Applications
int ApplicationId
varchar(255) ApplicationName
varcher(255) GroupName
如你所见,当我要插入表时,我需要GroupName。因此,为了做到这一点,我有两种方法来做到这一点。
或者我像上面那样传递groupId,然后在我的EventHandler中,我必须查询Group表以检索groupId的名称。要么我在上面的命令参数中传递GroupName,然后在我的eventHandler中我可以直接执行
myContext.Applications.Insert(applicationName, groupName)
CQRS怎么说?
谢谢。
我建议更多的是关于你的领域,而不是CQRS。
如果您遵循DDD,那么它将依赖于聚合-组是单独的聚合吗?如果是这样,那么是的,您将处理id(通常),并将使用Reporting查询在命令中查找相关数据以查找名称。
如果它不是一个不同的聚合,那么使用组名就不会违反这些问题。
我也会争论以上是否为最佳实践指南,没有银锤。或者,更清楚地说,如果您确实需要组名,可以传入。