2010-01-25 5 views
4

본인에게는 카테고리 및 제품 엔티티가 있습니다. 두 사람 사이의 관계는 일대일입니다. 카테고리는 집계 루트이기 때문에 제품을 처리해야하는 단일 저장소 ICategoryRepository 만 만들어야한다고 생각합니다.집계를위한 리포지토리!

아이디어가 있으십니까?

+0

내 DDD 사본은 집에 있으므로 다른 저장소에 대해 저장소/집계에 대한 질문을 남겨 두겠습니다.하지만 먼저 범주가 실제로 집계 루트인지 확인하고 있습니까? 단순히 1 대 다수의 관계를 갖는 것은 루트를 지정하지 않습니다. 이것을 루트로 사용하면 범주의 모든 제품 만 검색 할 수 있습니다. 또한 종종 Category와 같은 것이 엔티티 객체가 아닌 값으로 모델링됩니다. –

답변

3

내가 확실한 대답을 돌려 줄 곳이다 순간 Domain Driven Design by Evans의 내 사본없이 해요,하지만 dddstepbystep에서이 참조한다고 : 집계 내

가 집계가 뿌리. 집계 루트는 집합 내의 다른 모든 엔터티 및 값 개체에 대한 부모 엔터티입니다. 입니다.

저장소가에 따라 동작하는 집계 루트

그래서 그래,이 정의에 가고, 당신의 카테고리 저장소가 책임 범주 집합 내의 모든 엔티티를 지속하기위한해야합니다.

하지만 제 의견에 대한 제 질문은 여전히 ​​유효합니다 - 카테고리가 정말로 유용한 집계 루트라고 확신합니까? 제품을 지속시키는 것에 대해이 질문을하고 있다는 사실은 자신이 카테고리에서 분리되어 있다고 생각하거나 최소한 카테고리와 별도로 제품을 다룰 수 있기를 바랍니다.

+0

제품에 범주가 있어야하거나 그렇지 않으면 흥미 롭습니다. 그래서,이 관계 때문에 범주는 집계 루트라고 생각합니다. 내가 틀렸다면 나를 바로 잡아주세요! Person과 Address도 User가 집계 루트 인 동일한 관계가 있다고 생각합니다. –

+0

@john 여기에서이 게시물을 살펴보십시오. http://www.lostechies.com/blogs/jimmy_bogard/archive/2008/05/20/entity-value-objects-aggregates-and-roots.aspx 뿌리, 엔티티 및 값을 수집합니다. 핵심 설명은 루트 엔터티가 다른 집계에서 직접 참조 할 수있는 집계의 유일한 엔터티라는 것입니다. 이것은 당신의 모델링이 잘못되었다는 것을 말하는 것이 아니라, 그것이 저에게 이상하게 보일뿐입니다 -하지만 나는 완전히 잘못 될 수 있습니다! –

+0

제품에는 별도의 담당자가 있어야한다고 생각합니다. 고객이 장바구니에 제품을 추가 할 수 있기 때문입니다. user.Cart.AddProduct (product). 카테고리를 집계 루트로 만들면 Category 객체에서 관계를 탐색해야합니다. –