Compartir a través de


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 1.0
Constructores con parámetros 2.1
Conversiones de valor de propiedad 2.1
Tipos mapeados sin claves 2.1
Conventions 1.0
Convenciones personalizadas 7.0
Anotaciones de datos 1.0
Fluent API 1.0
Herencia: tabla por jerarquía (TPH) 1.0
Herencia: tabla por tipo (TPT) 5.0
Herencia: tabla por clase concreta (TPC) 7.0
Propiedades de estado de sombra 1.0
Claves alternativas 1.0
Navegación de varios a varios 5.0
Varios a varios sin entidad de combinación 5.0
Generación de claves: base de datos 1.0
Generación de claves: cliente 1.0
Tipos complejos/propios 2.0
Datos espaciales 2.2
Formato de modelo: código 1.0
Crear modelo a partir de la base de datos: línea de comandos 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 2.0
División de entidades 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 Sin soporte técnico planeado (1)
Editor gráfico de modelos Sin soporte técnico planeado (1)
Formato de modelo: EDMX (XML) Sin soporte técnico planeado (1)
Crear modelo a partir de la base de datos: Asistente para VS Sin soporte técnico planeado (1)

Consultar datos

Feature EF6.4 EF Core
Consultas LINQ 1.0
SQL generado legible Insuficiente 1.0
Traducción de GroupBy 2.1
Carga de datos relacionados: Cargado Anticipadamente 1.0
Carga de datos relacionados: Carga diligente de tipos derivados 2.1
Carga de datos relacionados: Carga diferida 2.1
Carga de datos relacionados: Explícito 1.1
Consultas SQL sin procesar: tipos de entidad 1.0
Consultas SQL sin formato: tipos de entidad sin clave 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) Sin soporte técnico planeado (1)

Guardado de datos

Feature EF6.4 EF Core
Seguimiento de cambios: instantánea 1.0
Seguimiento de cambios: notificación 1.0
Seguimiento de cambios: servidores proxy 5.0
Acceso al estado de seguimiento 1.0
Concurrencia optimista 1.0
Transactions 1.0
Procesamiento por lotes de instrucciones 1.0
Mapeo de procedimientos almacenados 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 1.0
API de creación y eliminación de bases de datos 1.0
Datos de inicialización 2.1
Resistencia de la conexión 1.1
Interceptores 3.0
Eventos 3.0 (parcial; #626)
Registro simple (Database.Log) 5.0
Agrupación de DbContext 2.0

Proveedores de bases de datos (2)

Feature EF6.4 EF Core
SQL Server 1.0
MySQL 1.0
PostgreSQL 1.0
Oracle 1.0
SQLite 1.0
SQL Server Compact 1.0 (3)
DB2 1.0
Firebird 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.