Primero, si estás comenzando un nuevo proyecto, vaya con Entity Framework ("EF") - ahora genera mucho mejor SQL (más parecido a Linq a SQL) y es más fácil de mantener y más poderoso que Linq to SQL ("L2S"). Desde el lanzamiento de .NET 4.0, considero que Linq to SQL es una tecnología obsoleta. MS ha sido muy abierto acerca de no continuar con el desarrollo de L2S.
1) Rendimiento
Esto es difícil de responder. Para la mayoría de las operaciones de entidad única (CRUD), encontrará casi el mismo rendimiento con las tres tecnologías. Debes saber cómo funcionan EF y Linq to SQL para utilizarlos al máximo. Para operaciones de alto volumen como consultas de sondeo, es posible que desee que EF/L2S "compile" la consulta de su entidad de manera que el marco no tenga que regenerar constantemente el SQL, o puede encontrarse con problemas de escalabilidad. (ver ediciones)
Para las actualizaciones masivas en las que está actualizando cantidades masivas de datos, SQL sin formato o un procedimiento almacenado siempre tendrá un mejor rendimiento que una solución ORM porque no tiene que ordenar los datos a través del cable. ORM para realizar actualizaciones.
2) velocidad de desarrollo
En la mayoría de los escenarios, EF soplará/SQL procedimientos almacenados lejos 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 se encuentre con problemas de sincronización entre su código objeto y su código de base de datos. La única vez 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 formato en una base de datos.
3) Neat/Código Mantenible
Sin duda, EF latidos/SQL sprocs. Debido a que sus relaciones están modeladas, las uniones en su código son relativamente infrecuentes. Las relaciones de las entidades son casi evidentes para el lector para la mayoría de las consultas. No hay nada peor que tener que pasar de la depuración de nivel a nivel oa través de múltiples SQL/nivel medio para comprender qué está pasando con sus datos. EF trae su modelo de datos a su código de una manera muy poderosa.
4) Flexibilidad
procs almacenados y SQL primas son más "flexible". Puede aprovechar sprocs y SQL para generar consultas más rápidas para el caso específico impar, y puede aprovechar la funcionalidad de base de datos nativa más fácil que con y ORM.
5) En general
No se deje atrapar en el false dichotomy de elegir un ORM vs uso de procedimientos almacenados. Puede usar ambos en la misma aplicación, y probablemente debería. Las operaciones masivas deben ir en procedimientos almacenados o SQL (que en realidad puede ser llamado por EF), y EF debe usarse para sus operaciones CRUD y la mayoría de las necesidades de su nivel medio. Tal vez elegirías usar SQL para escribir tus informes. Supongo que la moraleja de la historia es la misma que siempre ha sido. Use la herramienta correcta para el trabajo. Pero lo flaco de esto 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 podrá crear algunas aplicaciones increíbles de alto rendimiento con facilidad.
EDITAR: EF 5 simplifica esta parte un poco con auto-compiled LINQ Queries, pero por cosas de alta volumen real, definitivamente se necesita para probar y analizar lo que se ajusta mejor para usted en el mundo real.
no constructivo y, sin embargo, tantos upvotes? ...;) – BritishDeveloper
No veo por qué alguien marcó esto como no constructivo.Me parece realmente bueno. +1 de mi parte – Thanushka
Esta es una excelente pregunta en mi opinión. Personalmente, he notado que Entity Framework y todos los ORM similares son más lentos en comparación con el código simple/simple de ADO.Net. Hice esta prueba hace 2 años y luego una semana atrás. No estoy seguro de cómo se compara LINQ to SQL con EF. Pero ADO.Net siempre será el mejor en rendimiento. Si desea ahorrar tiempo de desarrollo, Entity Framework es una buena herramienta, pero definitivamente no lo es cuando su principal preocupación es el rendimiento. – Sunil