An interesting article considering the struggle with excessive mapping.
The main idea of the article is that each layer’s object should be responsible for it’s data: TopTrackModelView (for Controller), Track (for Domain) and TrackDB (for Repository)
It also states that a simple CRUD application probably does not need layers and can probably use only one model for all parts.
I especially liked that the author pointed out that the Domain object (Track) is completely owned by us, so we can enforce invariants, validation and proper state validity without restriction from frameworks and outside world.