나는 웹 사이트 프로젝트에 대해 ASP.NET MVC을 사용하기로 결정했으며 작성된 모범 사례를 따르기를 원합니다.IoC가 ASP.NET MVC 컨트롤러 생성자에 너무 많은 매개 변수를 사용합니까?
그래서, 별도의 프로젝트 생성 IRepositories 콘크리트 저장소에 도메인/모델을 분리했으며 이제 IOC의로 성 윈저에 내 관심을 돌았 다.
지금 직면하는 문제는 특정 컨트롤러의 경우 생성자에서 여러 개의 IRepository 매개 변수를 전달해야한다는 것입니다.
내 질문은 :
- 나는 아마도 너무 많은 저장소를 만들었습니다 - 일반적으로, 나는 1 저장소에 엔티티 클래스 1-1 데이터베이스 테이블을 매핑합니다. 내 리포지토리가 하나 이상의 엔티티/db 테이블을 효과적으로 포함해야합니까?
- IoC 및 Dependency Injection에 대한 요점을 놓쳤으며 매개 변수가 Controller 생성자로 전달되는 방법에 관심을 두지 않아야합니까?
일종의 문맥을 말합니다. 웹 사이트의 일부는 속성 유형 (성, 하우스 등 펍), 위치 (우편 번호, 도시), 개방 시간 등 그래서, 이러한 검색 구성 요소가 있습니다에 의해 검색 할 속성의 구글지도를 표시합니다 모든 개별 엔터티 PropertyType, Address.City, Address.Postcode.Lat + Long, OpeningTime.DateTime. 따라서 SearchController 생성자로 전달되어야하는 3 개의 별도 리포지토리도 있습니다.
이것은 간단한 예이지만 앞으로 더 많은 저장소 매개 변수가 다른 컨트롤러로 전달되는 것을 상상할 수 있습니다.
희망 사항.
답변이나 조언을 주셔서 감사합니다.
답변 해 주셔서 감사합니다. 2 질문에 따라 주시기 바랍니다 : 1) 컨트롤러 생성자의 params 수와 관련이 없다고 할 때 - 그래도 실제로 생성자를 코드화해야합니다. IoC는 실제로 생성자에 대한 코드를 만들지 않습니다. 2) 아마도 Service 클래스에는 인터페이스 만 포함되어 있으므로 인터페이스 (IOrderService)가 아닌 클래스로 Controller에 전달할 수 있으며 문제가 분리되어 쉽게 테스트 할 수 있습니까?다시 한 번 감사드립니다 –
1) 예, 당신은 여전히 완전히로드 된 생성자를 설정해야합니다. 2) 컨테이너는 인터페이스를로드 할 때 사용할 클래스 인스턴스를 처리합니다. 이 최근 질문을 참조하십시오. 도움이 될 수있는 두 가지 답변을 작성했습니다. http://stackoverflow.com/questions/871405/why-do-i-need-an-ioc-container-as-opposed-to-straightforward-di-code – bendewey