0

내가 회사의 고객이고 회사에서 이벤트를 제공한다고 가정 해 보겠습니다.저장소 대 서비스 - 가입 - 둘 다?

고객 테이블과 이벤트 테이블이 있습니다. 가입자 용. 그것들은 가입 테이블입니다 (junction으로 여분의 속성 : AccompaniedByPartner).

그래서 고객 및 이벤트 용 리포지토리가 있습니다.

하지만 지금 문제는 가입입니다.

구독에 추가, 제거, 수정 및 목록을위한 Repostitory가 있으며 PerformJoinSubscription 및 PerformCancelSubscription 서비스가 있습니까? 아니면 서비스 만 있습니까?

답변

3

이러한 질문에 답하려면 그 것이 자체적으로 서있을 수 있는지 또는 다른 것의 컨텍스트에서 의미가 있는지 여부를 묻습니다. 서브 스크립 션은 고객 및 이벤트 없이는 명확하게 이해할 수 없으므로 자체 리포지토리가 필요하지 않습니다. 공식적인 용어로, 집계 루트 인 엔티티 만 리포지토리를 가져야합니다.

대신 Customer 매개 변수 (또는 원하는 위치에 따라 Event를 취하는 Customer의 Join 메서드)를 사용하는 Event에 Subscribe 메서드를 제공하고 연결에 대한 내부 컬렉션을 업데이트하십시오. 수정 된 엔티티를 저장할 때 리포지토리는 관련 객체에 대한 변경 사항을 저장해야합니다. Entity Framework 같은 ORM이 자동으로 처리합니다.

+0

고마워요. 다음 문장은 그것이 저장소인지 서비스인지를 결정하는 참 쉬운 트릭입니다. "구독은 분명히 고객 및 이벤트 없이는 의미가 없으므로 자체 저장소를 필요로하지 않아야합니다." – NicoJuicy

관련 문제