¿Voy a suponer que sabes que EF ya usa ADO.NET bajo las cubiertas?
EF es simplemente una capa de abstracción que permite a los desarrolladores modelar el dominio y genera la lógica de acceso a la base de datos para usted.
Hay algunas razones para considerar si se debe codificar directamente contra ADO.NET o usar EF, pero para mí se me ocurren dos cosas:
- Quiero construir un sitio web de redes sociales. ¿Qué marco es el mejor en PHP?
- Si tengo una gran cantidad de iBeacons en varias tiendas diferentes, ¿hay un servicio disponible para permitir que cada persona administre sus balizas o tengo que administrar las balizas para cada tienda yo mismo?
- Desarrollo web, ¿cuál es el tema de tendencia único más que nada?
- Soy un desarrollador de UI / front-end con una experiencia total de 5 años. ¿Cómo puedo solicitar en el extranjero?
- Quiero ser desarrollador web. ¿Qué debo aprender?
- Eficiencia. EF genera una gran cantidad de lógica de acceso a datos repetitiva para usted. Esto le ahorra mucho tiempo de la necesidad de codificar manualmente la lógica CRUD, y también tiene muchas características integradas para ahorrar tiempo en la implementación de concurrencia, validación, carga diferida, gráficos de objetos, etc.
- Actuación. Como EF agrega otra capa a ADO.NET, viene con algo de sobrecarga. Si implementa su propia capa de acceso a datos directamente contra ADO.NET, es probable que funcione mejor. Hay muchos artículos con comparaciones de rendimiento entre ADO.NET y EF que muestran que el acceso RAW a ADO.NET es mucho más rápido. Es posible que incluso desee considerar un ORM alternativo (Micro ORM) como Dapper que fue desarrollado por los chicos de StackOverflow. Es rápido, pero aún le ahorra esfuerzo en implementar lógica repetitiva de placa de caldera. Definitivamente una buena compensación.
Dapper vs Entity Framework vs ADO.NET Performance Benchmarking