2013-03-12 5 views
0

이 메서드를 ISchoolclassCodeRepository 또는 ISchoolclassService에 넣어야합니까?이 논리를 리포지토리 또는 서비스에 넣기

/// <summary> 
     /// The client passes newly created and existing schoolclass codes. 
     /// The newly created schoolclass codes are returned. 
     /// </summary> 
     /// <param name="newAndExistingSchoolclassCodes">All schoolclass codes and the newly created by the user</param> 
     /// <param name="schoolyearId">The related schoolyear for a schoolclass code</param> 
     /// <returns>The newly created schoolclass codes</returns> 
     public IEnumerable<SchoolclassCode> GetNewCreatedSchoolclassCode(IEnumerable<SchoolclassCode> newAndExistingSchoolclassCodes, int schoolyearId) 
     { 
      var existingSchoolclassCodes = _uniOfWork.SchoolclassCodeRepository.GetSchoolclassCodes(schoolyearId).ToList(); 
      var newSchoolclassCodes = existingSchoolclassCodes.Except(newAndExistingSchoolclassCodes,new SchoolclassCodeComparer()); 
      return newSchoolclassCodes; 
     } 

답변

0

이것은 애플리케이션 로직과 비슷해 보입니다. 귀하의 경우이 서비스가 귀하의 서비스에 구현 될 것입니다. 그러나 이것은 종종 응용 프로그램 계층으로 이동합니다. 다양한 레이어를 설명하는 Here's some more information, 아마도 이러한 개념 중 일부를 채택하고 싶을 수도 있습니다.

리포지토리는 데이터 액세스 논리 만 보유합니다. 이는 CRUD와 같은 작업을 의미합니다.

+0

예. 예배 드리겠습니다. 리포지토리에는 서비스 내에서 호출되는 FetchById 메서드가 있습니다. 여기서는 물건을 제외하고 linq을 수행합니다. – Pascal

0

내 투표는 ISchoolclassService (있을 경우)입니다. 나는이 목적을 위해 다만 것을 창조하지 않을 것이다.

또한 SchoolclassCodeComparer에 따라 다릅니다. 자신의 데이터에 액세스했다면 학교 코드를 가져 오기 위해 동일한 저장소를 호출 할 것인가?

SchoolclassCodeComparer에 의해 부과 된 제약 조건을 쿼리에 전달할 수있는 방법이 있다면 리포지토리에이 옵션이 있습니다. 다양한 규칙을 사용하여 결과 집합의 사후 처리가 서비스에있을 수 있습니다.

저장소 계층에서 DataAccess를 처리하는 것을 선호합니다. Dataaccess의 논리는 매개 변수를 구성하고 반환 된 결과의 투영을 만드는 데만 제한됩니다 (필요한 경우).

다른 비즈니스 로직을 기반으로 데이터 세트를 마사지/필터링하면 서비스 작업이 될 수 있습니다.

+0

구성하거나 결과 (설정) 할 매개 변수가 없습니다. ORM 도구를 사용합니다. – Pascal

+0

잘 모르겠지만, 필자가 말하고자하는 것은'SchoolCode'의 필터 목록을 가지고 있다고 가정하면 데이터베이스에 "Not In"필터로 전달할 수 있습니다. 이는 목록을 쉼표로 구분 된 문자열로 변환하는 것을 의미 할 수 있습니다.이 논리는 저장소 자체에있을 수 있습니다. ORM을 사용하면이 번거 로움을 덜 수 있으며 LINQ의 이점도 누릴 수 있습니다. –