Я думаю, що аргумент про LINQ, здається, походить від людей, які не мають історії з розробкою баз даних (загалом).
Особливо, якщо використовувати такий продукт, як VS DB Pro або Team Suite, багато аргументів, наведених тут, не застосовуються, наприклад:
Важче у обслуговуванні та тестуванні: VS забезпечує повну перевірку синтаксису, перевірку стилів, перевірку референсів та обмежень тощо. Він також забезпечує повну можливість тестування одиниць та інструменти рефакторингу.
LINQ унеможливлює тестування справжніх одиниць, оскільки (на мій погляд) це не відповідає тесту на кислоту.
Налагодження простіше в LINQ: Чому? VS дозволяє здійснювати повне вхід з керованого коду та регулярну налагодження SP.
Скомпільований в єдину DLL, а не в сценарії розгортання. Ще раз VS приходить на допомогу, де він може створювати та розгортати повні бази даних або робити додаткові зміни, безпечні для даних.
Не потрібно вивчати TSQL за допомогою LINQ: Ні, ви цього не робите, але ви повинні вивчити LINQ - де користь?
Я справді не вважаю це користю. Бути в змозі щось змінити ізольовано, теоретично може звучати добре, але тільки тому, що зміни виконують контракт, не означає, що це поверне правильні результати. Щоб мати можливість визначити, які правильні результати, вам потрібен контекст, і ви отримаєте цей контекст з коду виклику.
Гм, слабко поєднані програми - це кінцева мета всіх хороших програмістів, оскільки вони дійсно збільшують гнучкість. Можливість змінити речі поодинці - це фантастично, і саме ваші одиничні тести забезпечать, що вона все одно повертає відповідні результати.
Перш ніж все засмутитися, я думаю, що LINQ має своє місце і має грандіозне майбутнє. Але для складних додатків, що вимагають великих даних, я не думаю, що вони готові зайняти місце збережених процедур. Цю думку я одержав відгук MVP в TechEd цього року (вони залишаться безіменними).
EDIT: Сторінка речей, що зберігаються у процедурі LINQ to SQL, - це те, про що я все-таки потрібно прочитати докладніше - залежно від того, що я можу змінити вищевказаний діатріб;)