聚合上的C#DDD模式查询

我是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规则吗?对不起,还不清楚。


犯罪嫌疑人X
浏览 139回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP