2010-07-23 13 views
0

저는 DDD를 배우는 중입니다. ASP.NET MVC 응용 프로그램을 쓰고 있는데 데이터베이스에서 채울 필요가있는 몇 가지 드롭 다운이 있습니다. 모든 유형 (상태, 결과 등)에 대해 매핑 된 엔티티를 만들었습니다.드롭 다운/선택 목록 채우기

데이터를 가져와야하는 위치를 알 수 없습니다. 선택 목록의 각 유형에 대해 별도의 저장소를 만드는 것은 MVC 컨트롤러에 많은 저장소를 주입해야하는 경우에 어려움을 겪습니다. 또한 이러한 모든 선택 목록은 읽기 전용이므로 선택 목록 당 저장소가 과도하게 보입니다. 저장소가 하나의 엔티티 유형의 콜렉션과 같아야하므로 모든 선택 목록 유형에 대해 단일 수퍼 저장소를 작성하는 것이 옳지 않은 것으로 보입니다.

저는 CQS에 대해 조금 읽었으며보고 계층을 가지고 있지만 올바르게 구현 된 방법을 모르겠습니다.

답변

1

우선, DDD에 익숙하지 않은 경우 CQRS를 살펴 보지 마십시오. 내 말은 - 들여다 봐라.하지만 실제 프로젝트를 구현하려고하지는 마라. 아직.

우리가 응용 프로그램의 쓰기 측면에서 읽기를 분리하지 않을 때 저장소는 혼합 된 책임의 약간의 원인을 엉망으로 만듭니다.

하나의 관점에서 볼 때 다른 관점에서 보면 집계 루트를 유지할 책임이 있습니다. 이는보고 기능도 담당합니다.

즉, 저장소에 표시 목적으로 만 데이터를 검색하는 기능이 포함되어있는 경우에는 아무 것도 잘못되지 않습니다 (적어도 내 마음에).

귀하의 경우 - 나는 단지 리포지토리의 데이터를 사용하여 드롭 다운을 작성합니다. 따라서 제품 드롭 다운 목록은 데이터를 ProductRepository.Find(bySomething) (또는 일반 저장소를 사용하기로 결정한 경우 Repository<Product>(bySomething))에서 가져옵니다.

p.s. DDD는 패턴에 그다지 중요하지 않다고 경고하십시오. 유비쿼터스 언어와 도메인 모델을 명시 적으로 표현한 것입니다.

관련 문제