We have tried using logic in ViewModels, but this is a path to madness. 

ViewModels should be POCO - only properties with no (or very basic) logic. All the mapping should be done in controller or even in QueryHanlder that is called by a controller. And QueryHanlder would take dependency on DB and do required mapping to get from DB data structure to ViewModel.

Responsibility of ViewModel is to carry data from controller to a view (or backwards). And if you get DB or mapping logic into, this is a violation of Single Responsibility Principle.

Bad practice to pass IQueryable to ViewModel
I have reputation 521, I can edit question and answer but not a comment. There is very helpful, but mistyped comment. Only one letter need to be changed. Should I flag it? I have no right do anything else.

Let us see the example:

There is a question:
Where is @Html.MailTo in MVC 4?

And the most usefull part of the answer for me is the comment: "marked up with a helper attribute e.g. [DataType(DataTypes.EmailAddress)]"

But it should be DataType.EmailAddress instead of DataTypes.EmailAddress.

I would like to delete the mistyped s, but I cannot. What should I do?
