엔티티가 집계의 루트가되면 집계 루트가 루트 엔티티의 기존 ID를 사용하거나 자체 ID를 생성합니까?

StackOverflow https://stackoverflow.com/questions/6091278

문제

도메인 기반 디자인 (DDD)에서 엔티티는 항상 고유 한 ID를 갖습니다.

DDD에서의 독서에서 나는 엔티티와 집계 뿌리 사이의 "고유 한 정체성"의 개념을 혼합하는 것처럼 보입니다. 예제에 따라,이를 암시 할 수 있습니다 :

  • 아래의 인터페이스 중 하나만 필요합니다.

또는

  • 둘 다 필요합니다.

"Eric Evans Type DDD"가 관심있는 한 "올바른"인지 알고 싶습니다.

예를 들어 엔티티 가이 인터페이스를 구현 하고이 메소드가 호출 될 때 GUID를 반환 할 수 있습니다.

public interface IEntity
{
   object IdThatIsUniqueForThisEntityObject { get; }
}
.

아래에 하나의 필요가 있습니까?

public interface IAggregateRoot
{
   object IdThatIsUniqueForThisAggregateRootObject { get; }
}
.

집계 루트는 위의 인터페이스를 구현해야하므로 루트 엔티티의 ID (IdthatisUniqueForthItityObject)와 별도로 다른 소유의 고유 ID (IdthatisUniqueForthIsaggregateOtobject)를 나타낼 수 있습니다. / P>

또는 집계 루트는 루트 엔티티 (IdthatisUniqueForthItityItyObject)를 사용하여 집계 루트의 고유 ID를 나타내는 것만으로?

도움이 되었습니까?

해결책

EntityID 만 필요합니다.생성 된 추가적인 루트 ID가 추가되지 않습니다.집계 루트는 액세스를 제어하고 오브젝트를 단일 데이터베이스 작업 단위로 구성하는 데 사용되는 집계입니다.집계는 오브젝트에 대한 모든 종류의 "새로운"또는 추가 ID를 부여하지 않습니다.

엔티티는 항상 고유 한 엔티티 ID가 있으며 충분해야합니다.정의에 따라 집계 루트 인 엔티티를 검색하는 작업은 또한 집계를 가져옵니다.때로는 독립 실행 형 엔터티 만 있고 다른 시간은 집계 루트의 다른 시간 인 엔티티의 개념이 없습니다.따라서 "루트 정체성을 집계"하는 개념도 전혀 필요하지 않습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top