En primer lugar, si está comenzando un nuevo proyecto, vaya con Entity Framework ("EF"): ahora genera un SQL mucho mejor (más parecido a Linq to SQL) y es más fácil de mantener y más potente que Linq to SQL (" L2S "). A partir del lanzamiento de .NET 4.0, considero que Linq to SQL es una tecnología obsoleta. MS ha sido muy abierto sobre no continuar con el desarrollo de L2S.
1) rendimiento
Esto es difícil de responder. Para la mayoría de las operaciones de una sola entidad ( CRUD ), encontrará casi un rendimiento equivalente con las tres tecnologías. Tienes que saber cómo funcionan EF y Linq to SQL para usarlos al máximo. Para operaciones de alto volumen como consultas de sondeo, es posible que desee que EF / L2S "compile" su consulta de entidad de modo que el marco no tenga que regenerar constantemente el SQL, o puede encontrarse con problemas de escalabilidad. (ver ediciones)
Para las actualizaciones masivas donde está actualizando cantidades masivas de datos, el SQL sin procesar o un procedimiento almacenado siempre funcionará mejor que una solución ORM porque no tiene que reunir los datos a través del cable al ORM para realizar actualizaciones.
2) Velocidad de desarrollo
En la mayoría de los escenarios, EF eliminará los procesos SQL / almacenados desnudos cuando se trata de la velocidad de desarrollo. El diseñador de EF puede actualizar su modelo desde su base de datos a medida que cambia (previa solicitud), para que no tenga problemas de sincronización entre su código de objeto y el código de su base de datos. El único momento en el que no consideraría usar un ORM es cuando está haciendo una aplicación de tipo informe / panel de control donde no está realizando ninguna actualización, o cuando está creando una aplicación solo para realizar operaciones de mantenimiento de datos sin procesar en una base de datos.
3) Código ordenado / mantenible
Sin dudas, EF supera a SQL / sprocs. Debido a que sus relaciones están modeladas, las uniones en su código son relativamente poco frecuentes. Las relaciones de las entidades son casi evidentes para el lector para la mayoría de las consultas. Nada es peor que tener que pasar de una depuración de nivel a nivel o a través de múltiples SQL / nivel medio para comprender lo que realmente está sucediendo con sus datos. EF trae su modelo de datos a su código de una manera muy poderosa.
4) flexibilidad
Los procesos almacenados y el SQL sin procesar son más "flexibles". Puede aprovechar sprocs y SQL para generar consultas más rápidas para un caso específico extraño, y puede aprovechar la funcionalidad de base de datos nativa más fácilmente que con ORM.
5) general
No se deje atrapar por la falsa dicotomía de elegir un ORM versus usar procedimientos almacenados. Puede usar ambos en la misma aplicación, y probablemente debería hacerlo. Las grandes operaciones masivas deben ir en procedimientos almacenados o SQL (que en realidad puede ser llamado por el EF), y EF debe usarse para sus operaciones CRUD y la mayoría de las necesidades de su nivel medio. Quizás elija usar SQL para escribir sus informes. Supongo que la moraleja de la historia es la misma de siempre. Use la herramienta adecuada para el trabajo. Pero lo flaco es que EF es muy bueno hoy en día (a partir de .NET 4.0). Dedique un poco de tiempo real a leerlo y comprenderlo en profundidad y puede crear algunas aplicaciones increíbles de alto rendimiento con facilidad.
EDITAR : EF 5 simplifica un poco esta parte con las consultas LINQ compiladas automáticamente , pero para cosas de alto volumen real, definitivamente necesitará probar y analizar qué le queda mejor en el mundo real.