2011-11-28 1 views
1

Asp net MVC 및 EF를 사용하여 사이트를 개발하고 있습니다. 내가보기 층에 도메인 객체를 가져 오지하기로 결정했습니다, 그래서 나는 DTO는목록 및 세부 정보 페이지의 동일한 엔티티에 대해 여러 개의 dto가 있습니까?

내가 페이지 코스/목록의 모든 과정을 나열이 (DTO 객체에 도메인을 매핑하고 Automapper) 그렇게 만듭니다. 그래서 나는 CourseDTO 코스/세부 사항

public class CourseDTO{ 
    public String Id { get; set; } 
    public String Title { get; set; } 
    public String Description { get; set; } 
    public List<ArgumentsDTO> Arguments {get;set;} //NOTE THIS 
} 

public class CourseListViewModel{ 
    public List<CourseDTO> Courses { get; set; } 
} 

를 생성/123 I는 과정의 교사를 표시 할 페이지입니다.

최상의 솔루션은 무엇입니까? 재사용 CourseDTO 별도의 목록

public class CourseDetailViewModel{ 
    public CourseDTO Course { get; set; } 
    public List<TeacherDTO> Teachers {get;set;} //NOTE THIS 
} 

나 또한 교사의 목록을 포함 CourseDetailDTO를 만들를 사용하여 뷰에 대한 교사의 목록을 가져? 나도 같은 도메인 개체의 두 DTO있을 것이다이 지난 경우

public class CourseDetailDTO{ 
    public String Id { get; set; } 
    public String Title { get; set; } 
    public String Description { get; set; } 
    public List<ArgumentsDTO> Arguments {get;set;} 
    public List<TeacherDTO> Teachers {get;set;} //NOTE THIS 
} 

..

답변

0

여기서 문제는 당신이 CourseDTO의 속성이 모두 필요합니다 Detail보기 여부입니다. 그렇다면 첫 번째 솔루션은 좋은 것처럼 보이고 CourseDTO 뷰 모델을 다시 사용합니다. 반면에 세부보기에서이 코스의 속성 중 일부 서식을 지정하는 데 필요한 몇 가지 특정 요구 사항이 있으면 두 번째 방법도 사용할 수 있습니다.

0

나는 일반적으로 동일한 엔티티에 대해 여러 DTO를 사용하지만 누군가가 이것이 실제로 나쁜 습관이 아니라고 확신 할 수 있다면 좋을 것입니다.

별도의 DTO가있는 것은 데이터가 적어 성능을 향상시킬 수 있다는 것을 의미하므로 별도의 DTO를 사용하는 것이 좋습니다. 필요하지 않은 데이터를 제공 할 필요가 없습니다.

관련 문제