Actualmente existen una herramienta básica para la ayuda en el desarrollo de nuestras aplicaciones en .NET llamada Entity Framework de Microsoft.
1. Introducción
Entity Framework 6 (EF6) es un asignador relacional de objetos diseñado para .NET Framework, pero compatible con .NET Core. EF6 es un producto estable y compatible, pero ya no se desarrolla activamente.
Entity Framework Core (EF Core) es un asignador de base de datos de objeto moderno para .NET. Admite consultas LINQ, seguimiento de cambios, actualizaciones y migraciones de esquemas.
EF Core funciona con SQL Server o Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL y muchas otras bases de datos mediante un modelo de complemento de proveedor de bases de datos.
Para profundizar un poco más con las diferencias entre ambas versiones puedes revisar este articulo
Conforme pasa el tiempo siempre salen nuevas versiones de productos, mas rápidos y mas eficientes, sea quien sea el desarrollador de ese producto, pero la esencia básica de lo que hace el producto sigue siendo la misma, el caso de EF6 y EF Core no es la excepción, EF6 va a quedar en el olvido con el tiempo claro, en lo personal aun sigo usando EF6.
Te dejo una tabla con las diferencias entre EF6 y EF Core
2. Creación de un modelo
Característica | EF6.4 | EF Core |
---|---|---|
Asignación de clase básica | Sí | 1,0 |
Constructores con parámetros | 2.1 | |
Conversiones de valores de propiedad | 2.1 | |
Tipos asignados sin claves | 2.1 | |
Convenciones | Sí | 1,0 |
Convenciones personalizadas | Sí | 7.0 |
Anotaciones de datos | Sí | 1,0 |
API fluida | Sí | 1,0 |
Herencia: tabla por jerarquía (TPH) | Sí | 1,0 |
Herencia: tabla por tipo (TPT) | Sí | 5.0 |
Herencia: tabla por clase concreta (TPC) | Sí | 7.0 |
Propiedades de estado reemplazadas | 1,0 | |
Claves alternativas | 1,0 | |
Navegaciones de varios a varios | Sí | 5.0 |
Varios a varios sin entidad de combinación | Sí | 5.0 |
Generación de claves: base de datos | Sí | 1,0 |
Generación de claves: cliente | 1,0 | |
Tipos complejos/de propiedad | Sí | 2.0 |
Datos espaciales | Sí | 2.2 |
Formato de modelo: código | Sí | 1,0 |
Crear un modelo desde base de datos: línea de comandos | Sí | 1,0 |
Actualizar modelo desde base de datos | Parcial | En el trabajo pendiente (n.º 831) |
Filtros de consulta global | 2.0 | |
División de tablas | Sí | 2.0 |
División de entidades | Sí | 7.0 |
Asignación de función escalar de base de datos | Poor | 2.0 |
Asignación de funciones con valores de tabla de base de datos | Poor | 5.0 |
Asignación de campos | 1.1 | |
Tipos de referencia que aceptan valores NULL (C# 8.0) | 3.0 | |
Visualización gráfica de modelo | Sí | No hay soporte técnico planeado (1) |
Editor de modelo gráfico | Sí | No hay soporte técnico planeado (1) |
Formato de modelo: EDMX (XML) | Sí | No hay soporte técnico planeado (1) |
Crear un modelo desde base de datos: asistente de VS | Sí | No hay soporte técnico planeado (1) |
3. Consultar datos
Característica | EF6.4 | EF Core |
---|---|---|
Consultas LINQ | Sí | 1,0 |
SQL generado legible | Poor | 1,0 |
Traslación de GroupBy | Sí | 2.1 |
Carga de datos relacionados: diligente | Sí | 1,0 |
Carga de datos relacionados: carga diligente de tipo derivados | 2.1 | |
Carga de datos relacionados: diferida | Sí | 2.1 |
Carga de datos relacionados: explícita | Sí | 1.1 |
Consultas SQL sin formato: tipos de entidad | Sí | 1,0 |
Consultas SQL sin formato: tipos de entidad sin clave | Sí | 2.1 |
Consultas SQL sin procesar: componer con LINQ | 1,0 | |
Consultas compiladas de manera explícita | Poor | 2.0 |
await foreach (C# 8.0) | 3.0 | |
Lenguaje de consulta basado en texto (Entity SQL) | Sí | No hay soporte técnico planeado (1) |
4. Almacenamiento de datos
Característica | EF6.4 | EF Core |
---|---|---|
Seguimiento de cambios: instantánea | Sí | 1,0 |
Seguimiento de cambios: notificación | Sí | 1,0 |
Seguimiento de cambios: servidores proxy | Sí | 5.0 |
Acceso al estado con seguimiento | Sí | 1,0 |
Simultaneidad optimista | Sí | 1,0 |
Transacciones | Sí | 1,0 |
Procesamiento de instrucciones por lotes | 1,0 | |
Asignación de procedimientos almacenados | Sí | 7.0 |
Grafo desconectado: API de bajo nivel | Poor | 1,0 |
Grafo desconectado: de un extremo a otro | 1.0 (parcial; n.º 5536) |
5. Otras características
Característica | EF6.4 | EF Core |
---|---|---|
Migraciones | Sí | 1,0 |
API de creación o eliminación de la base de datos | Sí | 1,0 |
Datos de inicialización | Sí | 2.1 |
Resistencia de la conexión | Sí | 1.1 |
Interceptores | Sí | 3.0 |
Eventos | Sí | 3.0 (parcial; n.º 626) |
Registro simple (Database.Log) | Sí | 5.0 |
Agrupación de DbContext | 2.0 |
6. Proveedores de bases de datos (2)
Característica | EF6.4 | EF Core |
---|---|---|
SQL Server | Sí | 1,0 |
MySQL | Sí | 1,0 |
PostgreSQL | Sí | 1,0 |
Oracle | Sí | 1,0 |
SQLite | Sí | 1,0 |
SQL Server Compact | Sí | 1.0 (3) |
DB2 | Sí | 1,0 |
Firebird | Sí | 2.0 |
Jet (Microsoft Access) | 2.0 (3) | |
Azure Cosmos DB | 3.0 | |
En memoria (para pruebas) | 1,0 |
7. Conclusiones
Como podemos ver las diferencias entre ambas versiones son significativas, pero eso no quiere decir que tires a la basura EF6 e inmediatamente migres tus aplicaciones a EF Core eso seria a mi punto de vista un error, primero se debe de analizar profundamente lo que se tiene con EF6 y lo que se ofrece con EF Core y pensar en una migración si y solo si es verdaderamente critica y necesaria por cuestiones de escalabilidad o de seguridad.
Indudablemente si estamos por realizar un desarrollo completamente nuevo sin pensarlo hay que usar EF Core.
Tu que piensas? coméntanoslo.
Te invito a ver otro de mis blogs
Jesús Serrano
Desarrollador web con amplia experiencia en diferentes lenguajes de programación, Servidores de Bases de datos y servidores web.
Recuerda: El secreto es la Paciencia
Contactar
Si necesitas ayuda con tu desarrollo de software o el marketing de tu negocio no dudes en ponerte en contacto con nosotros.
Teléfono: 4772288223