To maintain decoupling, you must map data between your layers (Entities to DTOs, DTOs to ViewModels). How you do this is a subject of great debate.
AutoMapper uses reflection to automatically map properties with the same name. It's fast to set up and reduces boilerplate. However, in large systems, it can become a 'Black Box' that is difficult to debug and can lead to performance issues if you accidentally map a large object graph.
Write a simple ToDto() extension method. It's boring to write, but it's 100% transparent, type-safe, and very fast at runtime. It's also much easier to Unit Test. Senior Architects often prefer manual mapping for the 'Core' of the application to ensure complete control over what data leaves the boundary.
Q: "Which one should I use?"
Architect Answer: "Use **Manual Mapping** for your Domain-to-Application boundary. It's too important to leave to an automator. Use **AutoMapper** (or better yet, **Mapster**) for the simple Application-to-UI boundary where you are just flattening basic properties for a front-end view. This provides a balance between control and productivity."