Creo que el argumento pro LINQ parece provenir de personas que no tienen un historial con el desarrollo de bases de datos (en general).
Especialmente si usa un producto como VS DB Pro o Team Suite, muchos de los argumentos aquí presentados no se aplican, por ejemplo:
Más difícil de mantener y probar: VS proporciona verificación de sintaxis completa, verificación de estilo, verificación de referencia y restricción y más. También proporciona capacidades de prueba de unidad completa y herramientas de refactorización.
LINQ hace que la prueba de unidad verdadera sea imposible ya que (en mi opinión) falla la prueba de ACID.
La depuración es más fácil en LINQ: ¿por qué? VS permite el acceso completo desde el código administrado y la depuración regular de SP.
Compilado en una sola DLL en lugar de scripts de implementación: una vez más, VS viene al rescate donde puede construir e implementar bases de datos completas o hacer cambios incrementales seguros para los datos.
No tiene que aprender TSQL con LINQ: No, no tiene, pero tiene que aprender LINQ: ¿dónde está el beneficio?
Realmente no veo esto como un beneficio. Ser capaz de cambiar algo de forma aislada puede sonar bien en teoría, pero solo porque los cambios cumplan un contrato no significa que esté devolviendo los resultados correctos. Para poder determinar cuáles son los resultados correctos, necesita contexto y obtiene ese contexto del código de llamada.
Um, las aplicaciones ligeramente acopladas son el objetivo final de todos los buenos programadores, ya que realmente aumentan la flexibilidad. Ser capaz de cambiar las cosas de forma aislada es fantástico, y son las pruebas de su unidad las que garantizarán que aún arroje los resultados adecuados.
Antes de que todos se enojen, creo que LINQ tiene su lugar y tiene un gran futuro. Pero para aplicaciones complejas que requieren muchos datos, no creo que esté listo para reemplazar los procedimientos almacenados. Esta fue una opinión que me hizo eco un MVP en TechEd este año (permanecerán sin nombre).
EDITAR: el lado de las cosas del procedimiento almacenado de LINQ to SQL es algo en lo que todavía necesito leer más, dependiendo de lo que encuentre, puedo alterar mi diatriba anterior;)