У меня были некоторые сомнения относительно общего структурирования и именования DTO. Вот пример, иллюстрирующий мой сценарий.
Предположим, у меня есть объект домена под названием «Клиент», который выглядит следующим образом:
Код: Выделить всё
public class Customer
{
public virtual int Id { get; set; }
public virtual string Name { get; set; }
public virtual Address Address { get; set; }
public virtual ICollection Accounts { get; set; }
}
- < ли>, Имя
Код: Выделить всё
Id - , Имя, Адрес
Код: Выделить всё
Id - , Имя, Адрес, Учетные записи
Код: Выделить всё
Id
Код: Выделить всё
public class CustomerEntry
{
public int Id { get; set; }
public string Name { get; set; }
}
public class CustomerWithAddress : CustomerEntry
{
public AddressDetails Address { get; set; }
}
public class CustomerWithAddressAndAccounts : CustomerWithAddress
{
public ICollection Accounts { get; set; }
}
Код: Выделить всё
AddressDetailsПри создании нового Клиента поля «Имя» и «Адрес» являются обязательными, а «Счета» являются обязательными. код> не является обязательным. Другими словами, мне нужен объект со всеми свойствами клиента. Отсюда и путаница:
- Что я использую для вставки и обновления?
В DTO есть все, но его имя
Код: Выделить всё
CustomerWithAddressAndAccounts
кажется немного неудобным для вставок/обновлений. - Должен ли я создать еще один DTO? Если я это сделаю, не будет ли это
дублированием, поскольку новый DTO будет точно таким же,?Код: Выделить всё
CustomerWithAddressAndAccounts - И последнее, но не менее важное: соответствует ли описанная
выше структура наследования DTO этим требованиям? Есть ли другие
способы смоделировать это?
Хотелось бы услышать ваше мнение.
Спасибо.
Подробнее здесь: https://stackoverflow.com/questions/188 ... nheritance
Мобильная версия