Хорошо. Это где шаги:
- Api.EmployeeController.Update (Api.EmployeeUpdateDto)
- Services.EmployeeService.Update (Service.EmployeeUpdateDto)
- Data.EmployRe. Обновление (Entities.Employee)
- Data.EfDbContext.Employees.Update (Entities.Employee)
Прежде всего. Хорошо, что у вас есть EmployeeUpdateDto
, поскольку вы обычно не обновляете точно те же поля, что и при создании нового объекта. Однако обычно я использую подход, основанный на более сложных задачах, например LockUserDTO
, RenameUserDTO
et c,
В DDD есть два типа услуг. Сервисы приложений и доменные сервисы. Службы приложений действуют как фасад для защиты вашего домена, тогда как службы домена используются для координации работы между несколькими объектами.
Service.EmployeeUpdateDto
на самом деле не добавляет никакой ценности. Если API dto изменяется, или если объект изменяется, он все еще должен быть обновлен. Таким образом, это не обеспечивает никакой дополнительной абстракции против только наличия API dto. Поэтому я бы удалил его и позволил сервису приложений напрямую использовать API dto.
- Api.EmployeeController.Update (Api.EmployeeUpdateDto)
- Services.EmployeeService.Update (Api.EmployeeUpdateDto )
- Data.EmployeeRepository.Update (Entities.Employee)
- Data.EfDbContext.Employees.Update (Entities.Employee)
Обычно я не использую сущность домена как сущность БД, так как она часто требует компромиссов в проекте, чтобы ORM мог сохранять ее должным образом. Помните, доменные сущности - ваше самое драгоценное сокровище. Единственное, что должно влиять на их дизайн - это домен.