У меня есть сводный корень (AR1), который ссылается на другой совокупный корень (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);
}
}
Это код в порядке?
Имейте в виду, что я никогда не изменяю AR2 ... Я только что читаю свойства. –
Что произойдет, если состояние ar2 будет изменено одновременно с этим кодом? У вас может быть недопустимое состояние. Кроме того, службы домена не предназначены для регидратации агрегатов, хранилищ. Помимо этого, может быть ничего плохого в том, чтобы вводить службу домена в AR-методе, но всегда старайтесь передать наиболее явную зависимость. Например. передавая ar2, а не службу для извлечения ar2. – plalx
Можете ли вы описать бизнес-сценарий, используя настоящую семантику домена, например «перечислить сумму денег из источника в учетную запись бенефициара». В противном случае мы не сможем помочь вам в правильном направлении. –