Скажем, у меня есть объект передачи данных, как показано ниже:Один DTO на таблицу базы данных?
Public Class Person
Private _Name As String
Private _Age As Integer
Public Property Name() As String
Get
Return _Name
End Get
Set(ByVal value As String)
_Name = value
End Set
End Property
Public Property Age() As Integer
Get
Return _Age
End Get
Set(ByVal value As Integer)
_Age = value
End Set
End Property
End класса
Это является объектным представлением следующей таблицы:
CREATE TABLE Person (PersonID int identity primary key, Name varchar(30), age int)
Скажем, я хотел, чтобы создать Таблица заказа в базе данных:
CREATE TABLE Order (OrderID int identity primary key, PersonID FOREIGN KEY references Person(ID), OrderDate datetime)
Я считаю, что я мог бы просто добавить еще два экземпляра и свойства экземпляра в объект передачи данных (при условии, что на человека всегда будет максимум один заказ). Является ли это целесообразным или у вас всегда есть одна DTO на таблицу базы данных?
Что вы подразумеваете под: «сериализация stUff». Я полагаю, вы имеете в виду писать в БД? – w0051977
Посредством сериализации я имею в виду преобразование данных в JSON или XML, что обычно происходит с DTO. Например, если вы использовали сложный PersonDTO, но не сложный OrderDTO, ваш JSON будет выглядеть как «{« Имя »:« Джон »,« Возраст »: 34», «Заказы»: [{«OrderID»: 1, OrderDate ":" 2013-05-01 "}, {" OrderID ": 2," OrderDate ":" 2013-06-01 "}]}'. Если вы использовали оба сложных класса, сериализованный ордер будет содержать всего человека , который содержит набор заказов и т. д. бесконечно, что отлично работает с .NET-ссылками, но не работает, когда вы конвертируете данные в обычный текст, например JSON. –
Конечно, вы можете иметь дело с этим - библиотеки JSON могут иметь дело с рекурсия, но это просто лишняя вещь, о которой нужно беспокоиться, что я предпочитаю не делать, если вам это не нужно. –