Ответ 1
По моему опыту накладные расходы минимальны при условии, что человек, который пишет запросы, знает, что он делает, и принимайте обычные меры предосторожности, чтобы гарантировать, что сгенерированные запросы являются оптимальными, что необходимые индексы находятся на месте и т.д. В другими словами, воздействие базы данных должно быть одинаковым; на стороне приложения минимальная, но обычно незначительная накладная.
Это говорит... есть одно исключение; если один запрос генерирует несколько агрегатов, поставщик L2S переводит его в большой запрос с одним подзапросом на агрегат. Для большой таблицы это может иметь значительное влияние ввода-вывода, поскольку стоимость ввода-вывода db для запроса растет по величинам для каждого нового агрегата в запросе.
Обходной путь для этого - это, конечно, перемещение агрегатов в сохраненные proc или view. У Мэтта Уоррена есть пример кода для альтернативного поставщика запросов, который более эффективно преобразует такие запросы.
Ресурсы
https://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=334211
http://blogs.msdn.com/mattwar/archive/2008/07/08/linq-building-an-iqueryable-provider-part-x.aspx