2010-02-08 5 views
5

저장소에서 작업 할 때 일반적으로이 메서드를 꽤 일반적으로 유지하려고 시도하지만 길 경우 메서드를 호출하거나 서비스 계층에보다 구체적으로 명명 된 메서드를 만드는 경우가 있습니다. 제 질문은 귀하의 도메인에 대한 지식이 귀하의 재 방문 계층에 있어야한다는 것입니다. 다음과 같이도메인에 대한 지식이 저장소 계층에 있어야합니까?

예를 들어, 저는 현재 방법이 있습니다

public User GetUniqueByRoleAndRoleProperty<TRole>(string propertyName, object propertyValue) 
    { 
     ... 
    } 
내가 특정 역할과 재산을 사용자에게 철수하는 데 사용

하지만 방법을 가지고 저장소에게 너무 많은 지식을주는 것

public User GetArtistBySlug(string slug) 
{ 
    ... 
} 

답변

2

작업을 수행하는 데 충분한 지식이 있어야하며 더 이상 필요하지 않습니다. "슬러그"가 "아티스트"레코드의 속성 인 경우 레이어가 이미이를 알고 있기 때문에 슬러그에 의해 아티스트를 조회하는 것이 좋습니다. 아티스트에게 굼벵이를 할당하는 작업이 복잡하고 복잡한 규칙 (예를 들어, 문장 등을 생각하는 것)을 따르는 경우,이 레벨에서만 작동하는 똑똑한 최적화를 절대적으로 사용해야하는 경우를 제외하고는 리포지토리가이를 구현해서는 안됩니다. 특수 데이터베이스 쿼리 구성

관련 문제