Вопрос, который был сформулирован прямо сейчас, немного двусмысленный. «Уровень данных» может состоять из множества, многих, разных потребностей и желаний.
Я предполагаю, что SQL Server является резервной БД. Но это единственный? Насколько однороден уровень данных?
Вы просто ищете простой способ запрашивать и выводить данные? Или у вас есть потребность в полномасштабном решении для реляционного отображения объектов? У вас есть потребности, кроме запросов? Миграции и леса например?
Желаете ли вы или можете пожертвовать временем, чтобы освоить более сложные (но гибкие) наборы инструментов, такие как NHibernate или Subsonic?
Поработав с различной степенью сложности с EF, Linq to SQL, Subsonic и NHibernate, поначалу ни один из них не является "трудным" для начала, но поиск решений более сложных проблем или крайних случаев будет отличаться в зависимости от каждого. Можно утверждать, что EF и NH имеют наибольшее количество пользователей, и, таким образом, немного легко найти блоги / сообщения Stackoverflow, чтобы ответить на ваши вопросы. В этом отношении мне повезло больше с EF / NH. Тем не менее, Subsonic - это более доступная кодовая база, чтобы засучить рукава и решить ваши собственные проблемы (IMO).
Лично, после нескольких прогонов, я предпочитаю всегда начинать с того, что я считаю самым простым решением - Linq to SQL. Я считаю, что его барьер для входа является самым низким и наименее "инвазивным". Тем не менее, он сопровождается заметными ограничениями (такими как зависимость от сервера SQL). Но для быстрого и грязного, просто сделайте работу, это мое любимое, так как я бы не стал тратить слишком много времени на беспокойство о своем уровне данных. Только после того, как появятся требования, которые диктуют сдвиг, я рассмотрю возможность отойти - например, недавний проект, необходимый для чтения / записи в SQLite и SQL Server, и, таким образом, мы пошли без NH.
Понимание того, что вам действительно нужно, может помочь сформировать ответы от общих комментариев.