Передовой опыт проектирования DTO для CRUD ASP.NET Core?

У меня есть уровень DTO для передачи данных между уровнем API, уровнем данных и другими У меня вопрос по шаблону проектирования DTO в C#

Пример:

public class ProductDTO{
    public int Id {get;set;}
    public string Name {get;set;}
    public decimal Price {get;set;}
    public int CategoryId {get;set;}
    public string Desc {get;set;}
}

Должен ли я разделить этот ProductDTO для CRUD?

Пример:

public class ProductInsertDTO
{
    public string Name {get;set;}
    public int CategoryId {get;set;}
}

для ProductDTO (500 байт) и ProductInsertDTO (293 байт) при передаче данных

Но тогда вы получаете 2 объекта. Зачем тебе это нужно?

progrAmmar 14.11.2018 03:31

Я всегда проектирую с одним объектом, но если я разделю dto, будет ли производительность системы лучше?

user3836200 14.11.2018 03:38

Я так не думаю, тогда вы создадите несколько классов для одного объекта, что увеличит размер приложения. Постарайтесь нормализовать и использовать объекты как можно чаще. На мой взгляд, вы можете создать абстрактный или суперкласс и расширить до него объекты. Подобно абстрактному классу Insert, вы сможете извлекать только те данные, которые требуются для вставки.

progrAmmar 14.11.2018 03:42

Спасибо @progrAmmar, попробую. у тебя есть образец?

user3836200 14.11.2018 04:00
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
2
4
552
1

Ответы 1

Нет. Для таких небольших объемов данных накладные расходы сети представляют собой гораздо большую проблему. Практическое правило: избегайте «болтливого» общения. Лучше обменять больше за один звонок, чем разбить его на несколько звонков.

Другие вопросы по теме