別の集計との関係を持つ新しい集計を作成する場合、関係集計はどこでチェックする必要がありますか?それがアプリケーションサービスにあるのか、または一部のドメインサービスによって工場内にあるのでしょうか?別の集約との関係を持つ集計を作成するときのDDD整合性チェック
class ApplicationService
{
public void CreateNewAr(relationArId, relationArId2)
{
var relationAR = _relationArRepository.getById(relationArId);
if(relationAR == null)
throw NotFoundException();
var relationAR2 = _relationAr2Repository.getById(relationArId2);
if(relationAR2 == null)
throw NotFoundException();
var newAr = _newArFactory.CreateFromAr1And2(relationAR.id, relationAR2.id);
_newArRepository.Insert(newAr);
_uow.Commit();
}
}
または
class NewArFactory
{
public NewAr CreateFromAr1And2(relationArId, relationArId2)
{
var relationAR = _relationArRepository.getById(relationArId);
if(relationAR == null)
throw NotFoundException();
var relationAR2 = _relationAr2Repository.getById(relationArId2);
if(relationAR2 == null)
throw NotFoundException();
var newAr = new NewAr(relationAR.id, relationAR2.id);
return newAr;
}
}
あなたが記述した場合、私はrelation1-2ARを持つ必要があります。これはnewARの作成に必要なすべての情報を必要としますか? – Robert
私は特別なケースについては説明しません。私はちょうどあなたがドメインに入り、 "ファクトリ"にドメインコンテキストがないことを覚えておいて、ドメイン内での作成が何を意味するのか考えるべきだと言います。 – jlvaquero