Моя команда и я создаем большие приложения .NET WinForms. Приложение использует различные «Сервисы» для получения данных в нашу базу данных и из нее. Каждая «служба» живет в своем собственном решении и обрабатывает определенный тип данных. Так, например, наша «ContactsService» управляет получением / сохранением контактов в нашей базе данных.
Обычно мы строим DTO для каждой службы. Итак, у нас может быть «ContactDTO», который имеет простые строковые свойства для каждой части данных в контакте. Теперь у нас также есть класс «Контакт» бизнес-уровня, который имеет точно такие же свойства, и, возможно, несколько дополнительных методов с некоторой бизнес-логикой. Вдобавок к этому «ContactsService» имеет свой собственный класс Contact, который гидратирован из ContactDTO.
Управление всеми нашими DTO и отображениями стало огромной проблемой. В настоящее время отправка контакта для сохранения в базе данных выглядит следующим образом:
Это просто ужасно. Если мы добавим свойство в наш клиентский класс Contact, нам придется добавить свойство и сопоставления в 3-4 местах.
Что мы делаем не так и как мы можем облегчить себе жизнь? Было бы проще использовать что-то вроде Json.NET и иметь JSON DTO? Мы проверили AutoMapper, но некоторые члены команды сочли его слишком сложным.