문제

보기에 전달 될 모델이 단일 저장소에 대한 단일 호출로 완전히 정의되는 경우. 다시 말해, 모델은 단일 집계입니까, 아니면 내 모델을 서비스 계층에서 자체 리포지토리와 함께 별도의 골재로 구성해야합니까?

내가 지금 가지고있는 방식은 단순히 단일 리포지토리를 호출하여 전체 모델을 채우는 다음 View에 의해 제공되는 것입니다. 골재, 저장소 및 모델이 모두 같은 개념이되고있는 것 같습니다.

도움이 되었습니까?

해결책

"위의 어느 것도 없다". 보기에는 프레젠테이션 모델을 사용하는 것이 선호하며 프레젠테이션 모델에는 저장소가 필요하지 않습니다. 여기에는 다양한 이유가 있습니다.

  • 프레젠테이션 모델을 사용하면 모델과 데이터베이스를 설계하기 전에 뷰와 컨트롤러를 설계 할 수 있습니다. 따라서 사용자 입력을 일찍 얻을 수 있습니다.
  • 프리젠 테이션 모델을 사용하면 "평평한"모델을보기에 전달할 수 있으므로 게으른로드와 같은 ORM 문제에 대해 걱정할 필요가 없습니다.
  • 프리젠 테이션 모델은 종종 모델 바인딩을 단순화합니다.
  • 프리젠 테이션 모델을 사용하는 경우 실수로 필드를 반환하는 것에 대해 걱정할 필요가 없습니다. 특정 사용자는 화이트리스트를 올바르게 얻지 못했기 때문에 사용자가 업데이트 할 수없는 필드를 실수로 업데이트하지 않아야합니다.

이제 더 구체적으로 질문의 줄을 따릅니다. 프리젠 테이션 모델의 인스턴스를 구축 했습니까? 몇 개의 리포지토리가 필요합니까? 글쎄,이 질문은 이제 거의 그 자체로 대답합니다. View의 요구 사항을 따르기 위해 프레젠테이션 모델을 설계합니다. 집계 뿌리 식별을 포함하여 좋은 TDD 관행에 따라 저장소를 설계합니다. 이제 "이 모델을 인스턴스화하는 데 필요한 저장소 수"에 대한 질문은 간단합니다. 모델에 필요한 집계 뿌리를 검사하고 필요한 뿌리를 사용합니다. 일반적으로 단일 LINQ 쿼리 로이 작업을 수행 할 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top