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