Qué diferencias hay entre Entity Framework 6 "tradicional" y Entity Framework Core
Menú de navegaciónMenú
Categorías

La mejor forma de Aprender Programación online y en español www.campusmvp.es

Qué diferencias hay entre Entity Framework 6 "tradicional" y Entity Framework Core

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

Un ORM (Object Relational Mapping) es un tipo de biblioteca de acceso a datos que intenta hacer que esta tarea sea más natural para los desarrolladores. Así, a la hora de acceder a datos, en lugar de utilizar otro lenguaje (generalmente SQL), un ORM permite que puedas utilizar los paradigmas habituales de la programación orientada a objetos: clases y objetos. En lugar de pensar en tablas y relaciones, piensas en objetos y propiedades.

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.

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 - 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.

Si no tienes claro qué es .NET Core y qué diferencias tiene con .NET, mejor que leas este artículo antes de continuar.

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. Actualmente, desde Agosto de 2017, va por su versión 2.0.

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 algunas de las características que tenía la EF tradicional.

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 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.

En la documentación oficial tienes una completísima tabla que compara las características de EF 6 y EF Core 1 y 2.

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 "un producto menos maduro que EF", es decir, traduciendo: que puedes esperar que le falten cosas importantes y que tenga fallos tontos todavía, aunque la versión 2.0 aparecida en Agosto de 2017 es mucho más estable ya. Las principales carencias de EF Core que no estaban en la versión 2.0 se solucionarán en gran parte cuando salga la versión 2.1, 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.

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 menos madura, 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.
campusMVP campusMVP es la mejor forma de aprender a programar online y en español. En nuestros cursos solamente encontrarás contenidos propios de alta calidad (teoría+vídeos+prácticas) creados y tutelados por los principales expertos del sector. Nosotros vamos mucho más allá de una simple colección de vídeos colgados en Internet porque nuestro principal objetivo es que tú aprendas. Ver todos los posts de campusMVP

No te pierdas ningún post

Únete gratis a nuestro canal en Telegram y te avisaremos en el momento en el que publiquemos uno nuevo.


Agregar comentario