Несколько dto для одной и той же сущности на страницах списка и деталей? - PullRequest
1 голос
/ 28 ноября 2011

Я занимаюсь разработкой сайта с использованием Asp net MVC и EF. Я решил не переносить объекты домена в слой представления, поэтому я создаю DTO для этого (и Automapper для сопоставления домена с объектами dto)

У меня есть страница Курс / Список , в котором перечислены все курсы. Поэтому я создаю 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 я также хочу показать преподавателей курса.

Какое лучшее решение? Повторно используйте CourseDTO и приведите список учителей в представление, используя отдельный список

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

или создать CourseDetailDTO, который также содержит список учителей?

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
}

В этом последнем случае у меня будет два DTO для одного и того же объекта домена.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2014

Я обычно использую несколько DTO для одной и той же сущности ... но было бы хорошо, если бы кто-то мог подтвердить, что это действительно неплохая практика.

Мне нравится иметь отдельные DTO, потому что это означает, что может потребоваться меньше данных, следовательно, увеличение производительности. Нет смысла предоставлять данные, которые не нужны.

0 голосов
/ 28 ноября 2011

Вопрос здесь заключается в том, понадобятся ли в представлении Detail все свойства CourseDTO. Если это так, то первое решение кажется хорошим и использует модель представления CourseDTO. Если, с другой стороны, в подробном представлении у вас есть определенные требования в отношении форматирования некоторых свойств этого курса, второй подход также приемлем.

...