Aggregate Root调用其他聚合根域服务。

时间:2014-11-21 13:40:21

标签: oop domain-driven-design aggregate aggregateroot domainservices

我有一个聚合根(AR1),它通过Identity引用另一个聚合根(AR2)。即如此处所讨论的http://www.informit.com/articles/article.aspx?p=2020371&seqNum=4

现在我在AR1的一个方法中,我需要访问AR2的完整对象来执行检查。我创建了一个名为AR2DomainService的域服务,现在正在注入AR1的方法。例如:

public class AR1 
{
     public Guid AR2Id; 

     public void DoSomething(IAR2DomainService, aR2DomainService)
     {
        AR2 ar2 = ar2DomainService.GetById(Ar2Id);

        if(ar2.status != Status.OK)
            //throw exception

        //do some processing. 

     }

     public bool DomSomething2(IAR2DomainService, ar2DomainService)
     {
          return ar2DomainService.DoSomething(Ar2Id); 
     }


}

这段代码好吗?

1 个答案:

答案 0 :(得分:1)

正如plalx指出的那样,域服务不会在这里检索聚合。我要做的是协调应用程序服务/命令处理程序中的所有内容。它从AR1读取关联的聚合根ID,并通过存储库检索它。然后,它可以从AR2中提取相关信息,并将其作为参数传递给AR1的方法。请注意,此参数越小越好。理想情况下,您不会完全传递AR2,而只会传递包含所需最少信息的值对象(您不希望在AR2中作为事务的一部分更新AR1