Недавно я просмотрел приложение, которое использует шаблон представления представления модели на уровне пользовательского интерфейса. Есть модели классов, как это:Несколько объектов передачи данных для нескольких слоев
Public Class OrderModel
Public Property OrderId() As Integer
Public Property OrderDate() As Date
Public Property RequiredDate() As Date
Public Property Freight() As Single
Public Property OrderDetails() As IList(Of OrderDetailModel)
Public Property Member() As MemberModel
End Class
В слое домена существуют классы домена, как это:
Public Class Order
Inherits BusinessObject
Public Property OrderId() As Integer
Public Property OrderDate() As Date
Public Property RequiredDate() As Date
Public Property Freight() As Double
Public Property Member() As Member
Public Property OrderDetails() As List(Of OrderDetail)
End Class
Обратите внимание, что порядок и OrderModel идентичны. Существует класс называется Model.vb в слое UI, который имеет много кода, как это:
Return Mapper.Map(Of List(Of Member), List(Of MemberModel))(members)
Это хорошая практика, чтобы иметь два различных объектов передачи данных для каждого объекта в базе данных? то есть один DTO в пользовательском интерфейсе (OrderModel) и один в модели (заказ) или лучше иметь один DTO для каждого объекта для обоих слоев, исключающий необходимость иметь код Mapper?