Соглашения об именах DTO, моделирование и наследованиеC#

Место общения программистов C#
Ответить
Anonymous
 Соглашения об именах DTO, моделирование и наследование

Сообщение Anonymous »

Мы создаем веб-приложение с использованием AngularJS, C#, веб-API ASP.NET и Fluent NHibernate. Мы решили использовать DTO для передачи данных на уровень представления (угловые представления).
У меня были некоторые сомнения относительно общего структурирования и именования 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; }
}
Теперь на уровне представлений/представлений мне нужно получить различные варианты Customer, например: Я создал набор DTO для выполнения это:

Код: Выделить всё

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
и AccountDetails — это DTO со всеми свойствами соответствующих им объектов домена. Они отлично подходят для запросов и извлечения данных.
При создании нового Клиента поля «Имя» и «Адрес» являются обязательными, а «Счета» являются обязательными. код> не является обязательным. Другими словами, мне нужен объект со всеми свойствами клиента. Отсюда и путаница:
  • Что я использую для вставки и обновления?

    Код: Выделить всё

    CustomerWithAddressAndAccounts
    В DTO есть все, но его имя
    кажется немного неудобным для вставок/обновлений.
  • Должен ли я создать еще один DTO? Если я это сделаю, не будет ли это
    дублированием, поскольку новый DTO будет точно таким же,

    Код: Выделить всё

    CustomerWithAddressAndAccounts
    ?
  • И последнее, но не менее важное: соответствует ли описанная
    выше структура наследования DTO этим требованиям? Есть ли другие
    способы смоделировать это?
Я просмотрел другие сообщения на эту тему, но не смог добиться большого прогресса. Я понял одну вещь: избегать использования суффикса «DTO» в именах классов. Думаю, это немного лишнее.
Хотелось бы услышать ваше мнение.
Спасибо.

Подробнее здесь: https://stackoverflow.com/questions/188 ... nheritance
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»