Если вы планируете сначала проектировать базу данных и вам не нужно ничего отображать (т. Е. Вы управляете именами БД), тогда SubSonic - достойный вариант.
Это прямолинейно, мало что от вас скрывает. Точно так же, для сложных сценариев я вынужден много обойти его и выполнить raw sql (или sproc).
Если вы ищете лучшую абстракцию объекта над базой данных, которая более точно соответствует вашей проблемной области, то я бы посмотрел на NHibernate или Castle ActiveRecord. Это дает вам гораздо больше гибкости в том, как вы хотите, чтобы ваша объектная модель выглядела, и у вас есть мощный API запросов.
Ничто из этого не имеет отношения к ASP.NET MVC, кроме того, что вы просто используете свои объекты в своем веб-проекте. В любом случае, я бы предложил поместить сущности в отдельный проект библиотеки классов.