2009-04-03 3 views
1

또는 루트 엔터티 개체를 포함하는 새 개체를 정의합니까?루트 엔터티를 인스턴스화 할 때 집계 개체를 만드십니까?

public class SomeAggregateName() 
{ 
    public EntityRoot root {get;set;} 
    public Entity entity {get;set;} 
} 

또는 집계 되나요?

public class EntityRoot() 
{ 
    public Entity entity {get;set;} 
} 
+0

아무것도 ? 필요한 경우 명확히 설명 드리겠습니다. –

답변

3

집합체는 일반적으로 암시 적입니다. 즉, 엔티티입니다.

예를 들어 실제로 도메인이 없기 때문에 약간의 어려움이 따르게됩니다.

하지만 OrderLines를 포함하는 Order Aggregate Root의 고전적인 예를 살펴 보겠습니다. Order는 Entity입니다. 또한 Aggregate Root입니다. OrderLine은 Order Aggregate 내에 포함되어 있으므로 Order Aggregate 외부로 직접 액세스 할 수 없습니다.

// This is the Order Aggregate Root 
public class Order 
{ 
    private IList<OrderLine> OrderLines { get; set; } 
} 
0

이와 관련된 질문 :

내가 FluentNHiberanate는, 예를 들어,이 같은 내 주문 클래스 모습 것을 요구 내 도메인 개체를 초기화하는 데 사용하려는 경우 :

public class Order 
{ 
    public virtual IList<OrderLine> OrderLines { get; set; } 
} 

이은을 위반 집합체의 내부 개체를 캡슐화합니다. 캡슐화를 위반하지 않고 수행하는 방법에 대한 아이디어가 있으십니까?


확인 (사용 가능한 솔루션 중 하나), 개인에 변경 OrderLines 회원 그것을 발견 및 매핑 파일이 추가 : 아래의 대답의 확실하지

HasMany(Reveal.Property<Order, IEnumerable<OrderLine>>("OrderLines")) 
.Inverse() 
.Cascade 
.All(); 
관련 문제