ViewModels: Yes
I only see bad points when passing an EF Entities directly to a view:
- You need to do manual whitelisting or blacklisting to prevent over-posting and mass assignment
- It becomes very easy to accidentally lazy load extra data from your view, resulting in select N+1 problems
- In my personal opinion, a model should closely resembly the information displayed on the view and in most cases (except for basic CRUD stuff), a view contains information from more than one Entity
Repositories: No
The Entity Framework DbContext already is an implementation of the Repository and Unit of Work patterns. If you want everything to be testable, just test against a separate database. If you want to make things loosely coupled, there are ways to do that with EF without using repositories too. To be honest, I really don't understand the popularity of custom repositories.