2012-12-06 4 views
0

저는 리포지토리 패턴을 사용하고 있으며 오랫동안 사용 해왔지만 실제로는 결코 좋은 해결책을 찾지 못했습니다. 종종 여러 엔티티와 관련된 데이터에 액세스해야하며 그 기능을 배치 할 위치에 대한 좋은 해결책이 무엇인지 찾을 수 없습니다. 시스템에 작업이 사용자가 있다고 가정리포지토리 패턴 : 여러 엔터티에 닿는 기능을 배치 할 위치는 어디입니까?

: 몇 가지 경우 내가 작업에 대한 사용자의 페어링 각 사용자에 대한 가장 최근의 작업 목록을 검색 할 필요가

  • 는 같은 말 a Dictionary<int, int> GetUsersRecentTask()
  • 해당 달의 모든 사용자 및 작업에 대한 보고서를 생성해야합니다.
  • 시스템의 모든 개체에 대한 통계를 생성해야합니다.

이제는 일반적으로 사용자 저장소라고 말하면서 그냥 기분이 좋지 않습니다..

나는 또한 더 높은 수준의 서비스에 배치하려고 시도했지만 단지 데이터 액세스를 여기에 넣으려고 생각하지 않습니다..

그래서 어디에 가장 좋을까요?

답변

1

리포지토리 패턴을 교리로 생각하지 마십시오. 그것은 단지 개념 일뿐입니다. 따라서 UsersRepository에는 GetUsersReport (작업 포함)가있는 ReportsRepository 및 Get [Object] Stats가있는 StatisticsRepository와 같은 다른 저장소가있는 GetUsersRecentTask가 있습니다.

리포지토리 패턴은 원래 비즈니스 개체 만 처리하지만보기 모델과 같은 개체가 더 적거나 데이터 구조 만 나타내는 보고서 데이터 (동작 없음)가 필요한 경우에도 여전히 좋은 패턴입니다. 따라서 ReportsRepository에 특정 보고서를 요청하는 것이 좋습니다.

일부 저장소는 비즈니스 개체를 처리하고 다른 저장소는 DTO를 처리한다는 점만주의해야합니다.

관련 문제