Menú de navegaciónMenú
Categorías

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

?id=db2fa1a1-82c0-4df1-bde1-f1b790c2e7de

Acceso a datos con .NET: Diferencias entre Entity Framework 6 "tradicional" y Entity Framework Core

Icono de advertencia ATENCIÓN: este contenido tiene más de 2 años de antigüedad y, debido a su temática, podría contener información desactualizada o inexacta en la actualidad.

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

.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 todo tipo de aplicaciones: Web multi-plataforma en servidor, utilidades de línea de comandos, escritorio.... 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 va por su versión 3.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, aunque carece de algunas de las características que tenía la EF tradicional (si bien tampoco se echan demasiado de menos).

Entre sus características añadidas o mejoradas están las propiedades shadow, la generación de claves en el lado cliente, mejor mapeado de funciones escalares, consultas compiladas explícitas, que las consultas SQL generadas son 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.

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.

Si quieres migrar una aplicación de EF 6 a EF Core, puedes intentarlo (¡buena suerte!) y aquí te dan algunas indicaciones y pistas para migrar de EF tradicional a EF Core.

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

Bueno, lo ideal y recomendable sería que aprendieses ambas. Dado que se parecen bastante "por fuera", pasar de uno a otro no debería ser terriblemente complicado.

Aprender ambas tiene sus ventajas ya que en la práctica te vas a encontrar con muchísimos proyectos creados con EF 6. Pero a medida que .NET Core se adopte más y más 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.

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 la nueva encarnación del ORM de Microsoft, basado en la filosofía del anterior, ligero, multi-plataforma y preparado para el futuro de .NET.
  • EF 6 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 lo que no vendría mal que lo conocieses, pero...
  • ...por otro lado EF Core es el futuro de la tecnología por lo que conviene aprenderla incluso aunque no vayas a usarlo de manera inmediata.
  • Y como se parecen mucho, no deberías tener mucho problema para pasar de uno a otro.
Fecha de publicación:
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

Boletín campusMVP.es

Solo cosas útiles. Una vez al mes.

🚀 Únete a miles de desarrolladores

DATE DE ALTA

x No me interesa | x Ya soy suscriptor

La mejor formación online para desarrolladores como tú

Comentarios (5) -

Pascal Guillon
Pascal Guillon

Una articulo clarísimo y muy completo, como hay pocos.
¡Muchas gracias!

Responder

Muy acertado el artículo, si no fuera porque EF 6 se sigue actualizando y se soporta en las última versiones de .NET Core.

Responder

José Manuel Alarcón
José Manuel Alarcón

Hola JB:

Claro que EF 6 se sigue actualizando: en el artículo no digo lo contrario. Pero no está soportado en .NET 5 como dices.

Con .NET 5 ha aparecido también ADO.NET Core Entity Framework 6, que es la versión 6 de EF para .NET Core, y que a pesar de la casi completa coincidencia de nombres, no es la misma cosa que la "clásica".

EF 6 clásico sigue siendo soportado y se actualiza con detalles, pero al igual que el resto de la plataforma no evolucionará y sigue estando atado a Windows. Es decir, todo lo que dice el artículo sigue siendo válido.

Saludos.

Responder

Estoy empezando en la plataforma de Microsoft y sus articulos aparte de completos, han sido bastante utiles. Muchas gracias por su esfuerzo.

Responder

José Manuel Alarcón
José Manuel Alarcón

Gracias por comentarlo 😊

Me alegro de que le hayan resultado útiles.

Saludos

Responder

Agregar comentario

Los datos anteriores se utilizarán exclusivamente para permitirte hacer el comentario y, si lo seleccionas, notificarte de nuevos comentarios en este artículo, pero no se procesarán ni se utilizarán para ningún otro propósito. Lee nuestra política de privacidad.