Condividi tramite


Confronto tra EF Core e EF6

EF Core

Entity Framework Core (EF Core) è un mapper di database a oggetti moderno per .NET. Supporta query LINQ, rilevamento modifiche, aggiornamenti e migrazioni dello schema.

EF Core funziona con SQL Server/database SQL di Azure, SQLite, Azure Cosmos DB, MySQL, PostgreSQL e molti altri database tramite un modello di plug-in del provider di database.

EF6

Entity Framework 6 (EF6) è un mapper relazionale a oggetti progettato per .NET Framework, ma con supporto per .NET Core. EF6 è un prodotto stabile e supportato, ma non è più in fase di sviluppo attivo.

Confronto delle funzionalità

EF Core offre nuove funzionalità che non verranno implementate in EF6. Tuttavia, non tutte le funzionalità di EF6 sono attualmente implementate in EF Core.

Le tabelle seguenti confrontano le funzionalità disponibili in EF Core ed EF6. Si tratta di un confronto generale e non elenca tutte le funzionalità o spiega le differenze tra la stessa funzionalità in versioni di Entity Framework diverse.

La colonna EF Core indica la versione del prodotto in cui è stata visualizzata la funzionalità per la prima volta.

Creazione di un modello

Feature EF6.4 EF Core
Mappatura delle classi di base 1.0
Costruttori con parametri 2.1
Conversioni dei valori delle proprietà 2.1
Tipi mappati senza chiavi 2.1
Convenzioni 1.0
Convenzioni personalizzate 7.0
Annotazioni dei dati 1.0
Fluent API 1.0
Ereditarietà: tabella per gerarchia (TPH) 1.0
Ereditarietà: tabella per tipo (TPT) 5,0
Ereditarietà: tabella per classe concreta (TPC) 7.0
Proprietà dello stato nascosto 1.0
Chiavi alternative 1.0
Spostamenti molti-a-molti 5,0
Molti a molti senza entità di intersezione 5,0
Generazione di chiavi: database 1.0
Generazione di chiavi: Client 1.0
Tipi complessi/di proprietà 2.0
Dati spaziali 2.2
Formato del modello: codice 1.0
Creare un modello dal database: riga di comando 1.0
Aggiornare il modello dal database Parziale Nel backlog (#831)
Filtri di query globali 2.0
Suddivisione delle tabelle 2.0
Suddivisione delle entità 7.0
Mapping delle funzioni scalari del database Povero 2.0
Mapping delle funzioni con valori di tabella di database Povero 5,0
Mapping dei campi 1.1
Tipi di riferimento nullable (C# 8.0) 3.0
Visualizzazione grafica del modello Nessun supporto pianificato (1)
Editor di modelli grafici Nessun supporto pianificato (1)
Formato del modello: EDMX (XML) Nessun supporto pianificato (1)
Creare un modello dal database: Procedura guidata di Visual Studio Nessun supporto pianificato (1)

Interrogazione dei dati

Feature EF6.4 EF Core
Query LINQ 1.0
SQL generato leggibile Povero 1.0
Traduzione di GroupBy 2.1
Caricamento di dati correlati: Rapido 1.0
Caricamento di dati correlati: caricamento anticipato per i tipi derivati 2.1
Caricamento di dati correlati: Lazy 2.1
Caricamento di dati correlati: esplicito 1.1
Query SQL grezze: tipi di entità 1.0
Query SQL grezze: tipi di entità senza chiavi 2.1
Query SQL grezze: composizione con LINQ 1.0
Query compilate in modo esplicito Povero 2.0
await foreach (C# 8.0) 3.0
Linguaggio di query basato su testo (Entity SQL) Nessun supporto pianificato (1)

Salvataggio dei dati

Feature EF6.4 EF Core
Rilevamento modifiche: Istantanea 1.0
Rilevamento modifiche: Notifica 1.0
Rilevamento modifiche: proxy 5,0
Accesso allo stato monitorato 1.0
Concorrenza ottimistica 1.0
Transactions 1.0
Invio in batch di istruzioni 1.0
Mappatura delle stored procedure 7.0
API di basso livello del grafico disconnesse Povero 1.0
Grafo disconnesso da estremità a estremità 1.0 (parziale; #5536)

Altre funzionalità

Feature EF6.4 EF Core
Migrations 1.0
API di creazione/eliminazione del database 1.0
Dati di base 2.1
Resilienza della connessione 1.1
Interceptors 3.0
Events 3.0 (parziale; #626)
Registrazione semplice (Database.Log) 5,0
Pooling del DbContext 2.0

Provider di database (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, un servizio di database distribuito globale di Microsoft 3.0
In memoria (per i test) 1.0

1 Alcune funzionalità di EF6 non verranno implementate in EF Core. Queste funzionalità dipendono dal entity data model (EDM) sottostante di EF6 e/o sono funzionalità complesse con un ritorno relativamente basso sugli investimenti. Il feedback è sempre gradito, ma mentre EF Core abilita molte cose non possibili in EF6, al contrario non è fattibile per EF Core supportare tutte le funzionalità di EF6.

2 I provider di database EF Core implementati da terze parti potrebbero essere ritardati nell'aggiornamento alle nuove versioni principali di EF Core. Per altre informazioni, vedere Provider di database .

3 I provider SQL Server Compact e Jet funzionano solo in .NET Framework (non in .NET Core).

Piattaforme supportate

EF Core 3.1 funziona su il .NET Core e il .NET Framework tramite il .NET Standard 2.0. Ef Core 5.0, tuttavia, non viene eseguito in .NET Framework. Per altri dettagli, vedere Piattaforme .

EF6.4 viene eseguito su .NET Core e .NET Framework, tramite multi-targeting.

Linee guida per le nuove applicazioni

Usare EF Core in .NET Core per tutte le nuove applicazioni, a meno che l'app non richieda un elemento supportato solo in .NET Framework.

Linee guida per le applicazioni EF6 esistenti

EF Core non è un sostituto diretto di EF6. Il passaggio da EF6 a EF Core richiederà probabilmente modifiche all'applicazione.

Quando si sposta un'app EF6 in .NET Core:

  • Continuare a usare EF6 se il codice di accesso ai dati è stabile e non è probabile che si evolva o richiedano nuove funzionalità.
  • Convertire in EF Core se il codice di accesso ai dati è in continua evoluzione o se l'app necessita di nuove funzionalità disponibili solo in EF Core.
  • La conversione in EF Core viene spesso eseguita anche per le prestazioni. Tuttavia, non tutti gli scenari sono più veloci, quindi eseguire prima alcune operazioni di profilatura.

Per altre informazioni, vedere Conversione da EF6 a EF Core .