我是DDD的新手,请多多包涵。
场景汇总A和汇总B
A通过聚合B上的RelationId与B相关联(因此将是B.A_Id。现在,我必须创建B,但是有一条规则是,如果B.SalesDate离A不到7个日历日,则不能创建B .ReleaseDate。我的问题是在聚合B上的CommandHandler上,我可以对聚合A进行查询以获取A.ReleaseDate,这样我就可以检查提供的B.SalesDate是否不超过7个日历日吗?在聚合B上使用的CommandHandler代码的一部分:
public async Task Handle(AddBCommand command, CancellationToken cancellationToken)
{
if (!command.IsValid())
{
NotifyValidationErrors(command);
return;
}
// this is where I do a query on Aggregate A to get details using the Id (which is A.Id from Aggregate A) selected on UI
var aggregateADetails = await A_Repository.GetFirstAsync(x => x.Id == command.Id);
//if (isCloserthan7Days.)
//{
// NotifyError(string.Empty, "B.SalesDate is 7 days closer than A.ReleaseDate");
// return;
//}
因此,在此CommandHandler上,我实例化了2个存储库,其中1个存储库用于B,1个存储库用于A在查询中使用。这样会违反DDD规则吗?对不起,还不清楚。
相关分类