봐 :여러 리포지토리 및 서비스가있는 .NET MVC 컨트롤러? (나는 매니저 종속성에 대한 의존성 삽입 (Dependency Injection)을 사용하고 있습니다) 내 컨트롤러에서
public RoleController(IRoleRepository roleRepository, ISiteRepository siteRepository, IUserRepository userRepository, IDbContext dbContext)
{
_roleRepository = roleRepository;
_siteRepository = siteRepository;
_userRepository = userRepository;
_dbContext = dbContext;
}
많은 종속성이있는 클래스를 갖는는 코드 냄새입니까? 권리?
그러나 내 예에서 Role
에 Users
과 Sites
을 연결해야합니다. 그런 다음이 연관성을 수행하려면 이러한 종속성이 필요합니다.
메일 링리스트에있는 사람들 중 일부는 너무 많은 의존성이 있다는 것은 뭔가 잘못되었다는 신호라고 들었습니다. 그러나 나는 다른 길은 찾지 못한다. 나는 내 책임을 분리했다. 그런 상황에서 나는 치료 방법을 모른다. 뭔가 잘못이다?
업데이트 :
DbContext 내 UnitOfWork에 있기 때문에 내가 저장소 및 DbContext 필요 저장소에 저장하지 않습니다.
이 예는 GRID가있는보기의 연관과 같은 일부 기능이있는 간단한 CRUD입니다.
업데이트 2 : 내 UI 레이어는 MVC입니다
가 나는 구조를 사용하고 있습니다.
일반적으로 나는 모든 엔티티가 아닌 집계 루트에 대한 리포지토리 만 만듭니다. 나는 당신의 도메인을 모르지만, 나의 직감은 당신에게 너무 많은 저장소가 있다고 말해줍니다. 또한 리포지토리와 dbcontext가 필요한 이유는 무엇입니까? 마지막으로, 나는 보통 "서비스"에서 "오케스트레이션"유형의 비즈니스 활동을 수행하고 리포지토리 등을 다루는 서비스를 선호합니다. 그런 다음 컨트롤러의 종속성은 서비스에서만 발생합니다. – Brook
@Brook 업데이트를 참조하십시오. –
가능한 중복 [asp.net-mvc 있음, IOC를 사용하여 컨트롤러에 다중 저장소를 주입하는보다 우아한 방법이 있습니까?] (http://stackoverflow.com/questions/7311623/in-asp-net-mvc- ioc-to-inject-mutiple-repositor를 사용하는 더 우아한 방법입니다. – Omar