It can be a matter of opinion, I like using view models (and DTOs) which gives the following benefits:
- I'm sure that all the data required for the view is loaded and not a proxy etc.
- If crafted correctly the DTOs provide a much smaller graph to store in a cache (may not apply to your setup)
- It allows my view models to vary greatly from Domain objects, often they are composites and are quite flatenned and to freely alter them without affecting any other part of my application.
Now to counter the above, and many would, you could work directly with your domain objects. I'd probably recommend this too if you find your view models are simply one to one likenesses of your domain and you don't see any benefit in the above.
As usual it depends on your setup
- your team
- what makes you productive
- tools used, ORM used if at all
- size and duration of project
- experience
- etc, etc, etc