2

나는 다음과 같은 데이터 구조를 가지고 마음에정확한 집계 루트 란 무엇입니까?

class Post 
{ 
    public string Title { get; set;} 
    public Category Category { get; set;} 
} 

베어링 게시물 항상 하나에 속하고 하나 개의 범주 내 추론이 올바른지를?

  • Category은 (게시물이 없이는 존재할 수 없기 때문에) 집계 루트 입니다
  • 가 있어야 할 CategoryRepository 아니지만 PostRepository (Post이 아니기 때문에 집계 (예 : GetCategoryGetPost 등의 방법으로) 루트)
+0

나는 PostRepository가 없다고 생각하지 않는다. 아마도'GetPost'를 갖는 것은'CategoryRepository'에 맞기에는 꽤 논리적이지만'Post'는 그것이 유일한 목적을 가지고있는 자신의 도메인을 가지고 있습니다. –

+1

@MunimAbdul'Post'는 집계 루트가 아니며 집계 루트에 대해서만 리포지토리를 만들어야하기 때문에. –

답변

5

어떻게 Post의 인스턴스를 참조 하시겠습니까? Post.TitlePost의 고유 한 식별자입니까? 그렇다면 Post이 유효한 합계 루트 인이고 TitlePost의 인스턴스를 검색하는 PostRepository을 생성해야합니다.

자동차를 예로 들어 보겠습니다. 자동차에는 색상이 있어야하지만 자동차가 없으면 존재할 수 없기 때문에 색상이 종합적인 루트라는 것을 명시하는 것은 잘못된 행동입니다. 나는 그것의 색깔에 독립적 인 번호판 번호를 가지고 독립적으로 차를 참조하고 싶다. 색상이 있어야한다는 사실은 단순히 색상을 제공하지 않고 자동차 인스턴스를 만들 수 없다는 내 자동차 도메인 모델의 기능입니다.

+0

그것은 아주 좋은 지적입니다. 회신을 답으로 표시하십시오. –

+0

또 다른 좋은 예는 태그입니다. 프로그래밍에 관한 글을 쓰기 전에 태그 "프로그래밍"을 만들지 마십시오. –

1

집계 루트 설계 고려 사항에 대해서는 RavenDB - StackOverflow style voting with Live Projections 일 때 종종이 리소스를 인용합니다. 이것은 핵심 사고 프로세스의 일부를 다루며 Category가 VERY POOR 집계 루트가되는 이유를 보여 주어야합니다.

+0

우수! 링크를 가져 주셔서 감사합니다. –

관련 문제