Я должен сказать, что это то, что вы искали. Это займет некоторое время, чтобы привыкнуть к нему, но как только вы это сделаете, вы не сможете думать о возвращении (по крайней мере, для меня).
Что касается linq против хранимых процедур, вы можете иметь плохую производительность, если вы неправильно ее построите. Я перешел на linq для sql некоторых хранимых процедур клиента, которые были ужасно закодированы, поэтому время сократилось с 20 сек (совершенно неприемлемо для веб-приложения) до <1 сек. И намного меньше кода, чем решение для хранимой процедуры. </p>
Обновление 1: Кроме того, вы получаете большую гибкость, поскольку вы можете ограничить столбцы того, что вы получаете, и он фактически только получит это. В решении с хранимой процедурой вы должны определить процедуру для каждого набора столбцов, который вы получаете, даже если базовые запросы совпадают.