Comparar EF Core y EF6

EF Core

Entity Framework Core (EF Core) es un asignador de base de datos de objetos moderno para .NET. Admite consultas LINQ, seguimiento de cambios, actualizaciones y migraciones de esquema.

EF Core funciona con SQL Server/Azure SQL Database, SQLite, Azure Cosmos DB, MySQL, PostgreSQL y muchas más bases de datos a través de un modelo de complemento de proveedor de bases de datos.

EF6

Entity Framework 6 (EF6) es un asignador relacional de objetos diseñado para .NET Framework, pero con compatibilidad con .NET Core. EF6 es un producto estable y compatible, pero ya no se está desarrollando activamente.

Comparación de características

EF Core ofrece nuevas características que no se implementarán en EF6. Sin embargo, no todas las características de EF6 se implementan actualmente en EF Core.

En las tablas siguientes se comparan las características disponibles en EF Core y EF6. Se trata de una comparación de alto nivel y no muestra todas las características ni explica las diferencias entre la misma característica en distintas versiones de EF.

La columna EF Core indica la versión del producto en la que apareció la característica por primera vez.

Creación de un modelo

Feature EF6.4 EF Core
Asignación de clases básicas Sí 1.0
Constructores con parámetros 2.1
Conversiones de valor de propiedad 2.1
Tipos mapeados sin claves 2.1
Conventions Sí 1.0
Convenciones personalizadas Sí 7.0
Anotaciones de datos Sí 1.0
Fluent API 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 de sombra 1.0
Claves alternativas 1.0
Navegación 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/propios Sí 2.0
Datos espaciales Sí 2.2
Formato de modelo: código Sí 1.0
Crear modelo a partir de la base de datos: línea de comandos Sí 1.0
Actualización del modelo desde la base de datos Parcial En el trabajo pendiente (#831)
Filtros de consulta global 2.0
Fragmentación de tablas Sí 2.0
División de entidades Sí 7.0
Asignación de funciones escalares de base de datos Insuficiente 2.0
Asignación de funciones con valores de tabla de base de datos Insuficiente 5.0
Asignación de campos 1.1
Tipos de referencia que aceptan valores NULL (C# 8.0) 3.0
Visualización gráfica del modelo Sí Sin soporte técnico planeado (1)
Editor gráfico de modelos Sí Sin soporte técnico planeado (1)
Formato de modelo: EDMX (XML) Sí Sin soporte técnico planeado (1)
Crear modelo a partir de la base de datos: Asistente para VS Sí Sin soporte técnico planeado (1)

Consultar datos

Feature EF6.4 EF Core
Consultas LINQ Sí 1.0
SQL generado legible Insuficiente 1.0
Traducción de GroupBy Sí 2.1
Carga de datos relacionados: Cargado Anticipadamente Sí 1.0
Carga de datos relacionados: Carga diligente de tipos derivados 2.1
Carga de datos relacionados: Carga diferida Sí 2.1
Carga de datos relacionados: Explícito Sí 1.1
Consultas SQL sin procesar: tipos de entidad Sí 1.0
Consultas SQL sin formato: tipos de entidad sin clave Sí 2.1
Consultas SQL sin procesar: Redacción con LINQ 1.0
Consultas compiladas explícitamente Insuficiente 2.0
await foreach (C# 8.0) 3.0
Lenguaje de consulta basado en texto (Entity SQL) Sí Sin soporte técnico planeado (1)

Guardado de datos

Feature 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 de seguimiento Sí 1.0
Concurrencia optimista Sí 1.0
Transactions Sí 1.0
Procesamiento por lotes de instrucciones 1.0
Mapeo de procedimientos almacenados Sí 7.0
API de bajo nivel de grafos desconectados Insuficiente 1.0
Grafo desconectado de extremo a extremo 1.0 (parcial; #5536)

Otras características

Feature EF6.4 EF Core
Migraciones Sí 1.0
API de creación y eliminación de bases 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; #626)
Registro simple (Database.Log) Sí 5.0
Agrupación de DbContext 2.0

Proveedores de bases de datos (2)

Feature 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 (la base de datos de Azure Cosmos) 3.0
En memoria (para pruebas) 1.0

1 Algunas características de EF6 no se implementarán en EF Core. Estas características dependen del modelo de datos de entidad (EDM) subyacente de EF6 o son características complejas con una rentabilidad relativamente baja de la inversión. Siempre agradecemos los comentarios, pero aunque EF Core permite muchas cosas no posibles en EF6, por el contrario, no es factible que EF Core admita todas las características de EF6.

2 Los proveedores de bases de datos de EF Core implementados por terceros pueden retrasarse en la actualización a nuevas versiones principales de EF Core. Consulte Proveedores de bases de datos para obtener más información.

3 Los proveedores de SQL Server Compact y Jet solo funcionan en .NET Framework (no en .NET Core).

Plataformas compatibles

EF Core 3.1 se ejecuta en .NET Core y .NET Framework mediante el uso de .NET Standard 2.0. Sin embargo, EF Core 5.0 no se ejecuta en .NET Framework. Consulte Plataformas para obtener más información.

EF6.4 se ejecuta en .NET Core y .NET Framework mediante multi-destino.

Instrucciones para nuevas aplicaciones

Use EF Core en .NET Core para todas las aplicaciones nuevas a menos que la aplicación necesite algo que solo se admita en .NET Framework.

Instrucciones para aplicaciones EF6 existentes

EF Core no es un reemplazo directo para EF6. Es probable que el cambio de EF6 a EF Core requiera cambios en la aplicación.

Al mover una aplicación de EF6 a .NET Core:

  • Siga usando EF6 si el código de acceso a datos es estable y no es probable que evolucione o necesite nuevas características.
  • Puerto a EF Core si el código de acceso a datos está evolucionando o si la aplicación necesita nuevas características solo disponibles en EF Core.
  • La migración a EF Core también se realiza a menudo para el rendimiento. Sin embargo, no todos los escenarios son más rápidos, así que primero realice un análisis de rendimiento.

Consulte Migración de EF6 a EF Core para obtener más información.