Qué diferencias hay entre Entity Framework 6 “tradicional” y Entity Framework Core

08/08/2017Artículo original

EF o Entity Framework es el ORM oficial de Microsoft, creado, desarrollado y mantenido por el gigante informático dentro de su plataforma .NET.

De manera simplificada podemos decir que Entity Framework, como cualquier ORM, permite acceder a una base de datos utilizando clases que representan cada una de las entidades de ésta, pudiendo realizar cualquier operación sobre los datos simplemente llamando a métodos de estas clases.

EF 6.0 “clásico”

EF lleva casi una década entre nosotros. Su primera versión, la 1.0, se lanzó en verano de 2008, y ha ido evolucionando para adaptarse a las necesidades que iban surgiendo.

El versionamiento de EF siempre ha sido un tanto “especial”, saltando en 2010 de la versión 1.0 a la 4.0 (para hacerla coincidir con .NET 4.0), y luego dando saltos “extraños” cada cierto tiempo: 4.1, 4.3.1, la 5.0 (que salió con .NET 4.5) hasta llegar a la 6.0, lanzada nada menos que en Octubre de 2013. Desde entonces solo han liberado pequeñas actualizaciones y la última ha sido la 6.1.3 que salió en marzo de 2015, o sea, hace ya más de dos años a la hora de escribir esto (Agosto de 2017). Al principio formaba parte de la propia plataforma .NET, pero cuando se hizo pública la versión 6.0 decidieron separarlo para poder lanzar actualizaciones independientes (las llamadas out-of-band updates) y se instala como un paquete NuGet (el más popular de todos, de hecho).

Por cierto que EF es una tecnología Open Source en la que todo el mundo puede ver su código fuente e incluso contribuir con mejoras y aladidos.

Todas estas versiones se pueden considerar Entity Framework “clásico”, a partir de ahora EF6.

Lo bueno de EF 6 es que es una plataforma muy probada en mil batallas, muy estable y con las características y capacidades muy definidas. Si la aprendes sabes que vas a poder crear aplicaciones de acceso a datos sin problemas técnicos (si la usas bien, claro). Además, aunque la siguen manteniendo y corrigen bugs, no va a evolucionar mucho más, por lo que lo que aprendas va a ser muy estable.

  Cómo leer cualquier artículo de Internet sin publicidad, ni comentarios y sin aceptar cookies

Lo malo de EF6 es que solamente funciona en Windows y con la plataforma .NET “clásica”. Eso no tiene por qué ser un problema en absoluto. Todo depende del tipo de aplicaciones que crees.

EF Core 1.0 – La nueva generación

Como seguramente sabes si no has estado incomunicado el último año, Microsoft lanzó en verano de 2016 una nueva versión de su plataforma de desarrollo .NET: .NET Core.

.NET Core es una versión más ligera y modular de .NET, con menos capacidades pero con mayor rendimiento, menor consumo de recursos y además multiplataforma: capaz de ejecutarse en Windows, Linux o Mac. Hoy por hoy se utiliza para crear aplicaciones Web multi-plataforma, así como utilidades de línea de comandos. No es una versión nueva de lo anterior, sino que es una nueva plataforma, creada desde cero en paralelo, por lo que va mucho más allá y no debe confundirse.

Junto con .NET Core se han desarrollado del mismo modo algunas tecnologías relacionadas, entre ellas por supuesto una nueva Entity Framework. Tras dar muchos bandazos con el nombre, finalmente su primera versión se bautizó, con muy buen criterio, como Entity Framework Core 1.0 o simplemente EF Core.

Por cierto, EF Core también es de código abierto, claro.

Por lo tanto EF Core es una versión ligera, extensible y multi-plataforma de Entity Framework.

Al igual que .NET Core, EF Core no es una nueva versión sino que ha sido creada desde cero a partir de lo que Microsoft aprendió creando la EF “clásica”. Por ello no se trata de una edición mejorada de EF 6 sino que es una nueva tecnología, que comparte muchos conceptos con la anterior, añade algunas novedades, pero también carece de muchas de las características que tenía la EF tradicional.

  Github lanza Sponsors, una plataforma para ayudar a que los desarrolladores reciban donaciones por sus proyectos open source

Por ejemplo, EF Core no tiene la capacidad de hacer carga diferida de datos (lazy loading), manejo de datos espaciales, mapeado de procedimientos almacenados o la posibilidad de hacer agrupamientos en el servidor, entre otras muchas cosas que sí tiene EF 6. Sin embargo posee características propias que no están en la versión tradicional como propiedades shadow, generación de claves en el lado cliente, consultas SQL generadas mucho más legibles o la posibilidad de lanzar instrucciones en batch.

Aunque EF Core se parece mucho externamente y en espíritu a EF 6, y si conoces la versión “clásica” enseguida te encontrarás cómodo con la versión “Core”, no debes dejarte engañar: es un tipo diferente de animal y, el infierno está en los detalles, por lo que requiere su propio aprendizaje y sus buenas dosis de “pegarse” con ella para aprender a sacarle partido.

La propia Microsoft dice que EF Core es “fundamentalmente un producto v1”, es decir, traduciendo: que puedes esperar que le falten cosas importantes y que tenga fallos tontos todavía. Eso se solucionará en gran parte cuando salga la versión 2.0, que se espera para finales de este año 2017.

Tampoco recomiendan migrar aplicaciones de EF 6 a EF Core, puesto que no hay una manera sencilla y directa de hacerlo. Si no te queda más remedio puedes intentarlo (¡buena suerte!) y aquí te dan algunas indicaciones y pistas.

¿Cuál debo aprender? ¿Cuál debo utilizar?

Bueno, lo ideal y recomendable sería que aprendieses ambas bibliotecas, empezando por EF 6 y luego pasando a EF Core. Dado que se parecen bastante “por fuera”, sería la forma más natural de realizarlo.

Aprender ambas tiene sus ventajas ya que en la práctica te vas a encontrar con muchísimos proyectos (la mayoría) creados con EF 6. Pero a medida que .NET Core se adopte y sobre todo si vas a empezar nuevos proyectos, EF Core va a formar parte de tu día a día como desarrollador .NET en el medio plazo.

  .NET Core / .NET 5: Cómo publicar aplicaciones en un único ejecutable

Si vas a crear aplicaciones para la plataforma universal de Windows (UWP, para Windows 10, Windows Mobile, XBox e incluso Hololens) o si son aplicaciones Web multi-plataforma con ASP.NET Core, no te quedará más remedio que utilizar EF Core, ya que éstas solo trabajan con .NET Core.

En resumen

  • EF 6 es la versión tradicional, estable y con todo tipo de funcionalidades del ORM de Microsoft, atado a Windows y soportado por Microsoft pero no desarrollado activamente.
  • EF Core es un nuevo ORM, basado en la filosofía del anterior, ligero, multi-plataforma y todavía un poco verde y falto de características, pero capaz de crear muchas aplicaciones, especialmente de tipo Web con ASP.NET Core. Además, es multi-plataforma.
  • EF 6 es indispensable aprenderla puesto que está en uso en miles y miles de aplicaciones en todo el mundo y te lo vas a encontrar quieras o no si trabajas con .NET.
  • Por otro lado EF Core es claramente el futuro de la tecnología a medio/largo plazo por lo que conviene aprenderla incluso aunque no vayamos a usarlo de manera inmediata.
Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Contiene enlaces a sitios web de terceros con políticas de privacidad ajenas que podrás aceptar o no cuando accedas a ellos. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Más información
Privacidad