Не перегружайте оператор присваивания - это неприятно и укусит любого разработчика, который унаследует ваш код.Лучше быть явным.
Я бы инкапсулировал логику для отображения этих двух типов (или более, если это не 1: 1) в отдельный класс.Создайте класс UserAdapter
, в котором вы сможете реализовать свои методы ToEntity
/ FromEntity
.
И убедитесь, что вы используете AutoMapper , чтобы минимизировать объем кода.
AutoMapper использует плавный API конфигурации для определения объекта-объектная стратегия.AutoMapper использует основанный на соглашении алгоритм сопоставления для сопоставления значений источника и назначения.В настоящее время AutoMapper ориентирован на сценарии проецирования моделей для выравнивания сложных объектных моделей для DTO и других простых объектов, дизайн которых лучше подходит для сериализации, связи, обмена сообщениями или просто для защиты от коррупции между доменом и прикладным уровнем.
Обновление:
Вы можете добавить эти методы в класс User
, и этого может быть достаточно для небольшого проекта.Я немного пурист, когда дело доходит до дизайна, и я не буду использовать логику адаптера вне этих классов. Почему класс User
должен быть зависимым и иметь какие-либо знания о классе UserEntity
? Мне немного неприятно связывать их вместе.Отдельный слой адаптеров более перспективен.Например, если вам придется заменить слой вашей базы данных на другой (т. Е. Перейти с Linq2SQL на EntityFramework или Dapper), все, что вам нужно сделать, это создать новые адаптеры - ваши бизнес-классы останутся без изменений.