Linq to SQL достаточно хорош, если вы хотите только однозначное сопоставление между вашими классами и таблицами, считайте его «объектной» версией наборов данных.
EF позволяет выполнять намного более сложные сопоставления.
В долгосрочной перспективе Microsoft подталкивает всех к EF, однако EF более сложен в использовании. До выпуска .net 4 очень сложно разрабатывать тест-драйв с EF.
Если вы собираетесь скрыть весь доступ к данным за набором интерфейсов и самостоятельно создавать объекты домена на основе строк, которые вы получаете из базы данных, то Linq to SQL является хорошим вариантом в краткосрочной перспективе. Но вы можете быть вынуждены перейти на EF в долгосрочной перспективе.
Если вы хотите отобразить ваши доменные объекты в базу данных, используя ORM, тогда EF - лучший объект, но также следует учитывать nhibernate
Если вы вернетесь через несколько лет, ответом на ваш вопрос будет EF, однако в настоящее время он не совсем ясен ...