Condividi tramite


Versioni precedenti di Entity Framework

La prima versione di Entity Framework è stata rilasciata nel 2008, come parte di .NET Framework 3.5 SP1 e Visual Studio 2008 SP1.

A partire dalla versione di EF4.1, è stato fornito come pacchetto NuGet EntityFramework, attualmente uno dei pacchetti più diffusi in NuGet.org.

Tra le versioni 4.1 e 5.0, il pacchetto NuGet EntityFramework ha esteso le librerie EF fornite come parte di .NET Framework.

A partire dalla versione 6, EF è diventato un progetto open source ed è stato spostato completamente fuori banda da .NET Framework. Ciò significa che quando si aggiunge il pacchetto NuGet EntityFramework versione 6 a un'applicazione, si ottiene una copia completa della libreria EF che non dipende dai bit ef forniti come parte di .NET Framework. Ciò ha aiutato in qualche modo ad accelerare il ritmo di sviluppo e distribuzione di nuove funzionalità.

Nel giugno 2016 è stato rilasciato EF Core 1.0. EF Core è basato su una nuova codebase ed è progettato come una versione più leggera ed estendibile di EF. Ef Core è attualmente l'obiettivo principale dello sviluppo per il team di Entity Framework in Microsoft. Ciò significa che non sono previste nuove funzionalità principali per EF6. Ef6 viene comunque mantenuto come progetto open source e come prodotto Microsoft supportato.

Ecco l'elenco delle versioni precedenti, in ordine cronologico inverso, con informazioni sulle nuove funzionalità introdotte in ogni versione.

Aggiornamento di Entity Framework Tools in Visual Studio 2017 15.7

Nel mese di maggio 2018 è stata rilasciata una versione aggiornata di EF Tools come parte di Visual Studio 2017 15.7. Include miglioramenti per alcune aree problematiche comuni:

  • Correzioni di vari bug di accessibilità dell'interfaccia utente
  • Soluzione per la regressione delle prestazioni di SQL Server durante la generazione di modelli da database esistenti n. 4
  • Supporto dell'aggiornamento dei modelli per modelli di dimensioni superiori in SQL Server n. 185

Un altro miglioramento in questa nuova versione di EF Tools è l'installazione del runtime di EF 6.2 durante la creazione di un modello in un nuovo progetto. Con le versioni precedenti di Visual Studio è possibile usare il runtime di EF 6.2 (o altre versioni precedenti di EF) installando la versione corrispondente del pacchetto NuGet.

EF 6.2.0

Il runtime di EF 6.2 è stato rilasciato in NuGet nel mese di ottobre 2017. Grazie principalmente al lavoro svolto dalla community di contributori open source, EF 6.2 include numerose correzioni di bug e miglioramenti del prodotto.

Di seguito viene riportato un breve elenco delle modifiche più importanti che interessano il runtime di EF 6.2:

  • Riduzione del tempo di avvio grazie al caricamento di modelli Code First finiti da una cache persistente n. 275
  • API Fluent per definire gli indici n. 274
  • DbFunctions.Like() per abilitare la scrittura di query LINQ che vengono convertite in LIKE in SQL n. 241
  • Migrate.exe ora supporta l'opzione -script n. 240
  • EF6 consente ora di usare i valori chiave generati da una sequenza in SQL Server n. 165
  • Aggiornamento dell'elenco di errori temporanei per la strategia di esecuzione SQL Azure n. 83
  • Bug: i nuovi tentativi di query o comandi SQL restituiscono l'errore "SqlParameter già contenuto in un altro elemento SqlParameterCollection" n. 81
  • Bug: frequente timeout della valutazione di DbQuery.ToString() nel debugger n. 73

EF 6.1.3

Il runtime di EF 6.1.3 è stato rilasciato in NuGet a ottobre 2015. Questa versione contiene solo correzioni a difetti e regressioni ad alta priorità segnalati nella versione 6.1.2. Le correzioni includono:

  • Query: Regressione in EF 6.1.2: OUTER APPLY ha introdotto e query più complesse per le relazioni 1:1 e la clausola "let"
  • Problema TPT con nascondere la proprietà della classe di base nella classe ereditata
  • DbMigration.Sql ha esito negativo quando la parola 'go' è contenuta nel testo
  • Creare un flag di compatibilità per il supporto di UnionAll e Intersect flattening
  • La query con più include non funziona nella versione 6.1.2 (funzionante nella versione 6.1.1)
  • Eccezione "Si è verificato un errore nella sintassi SQL" dopo l'aggiornamento da EF 6.1.1 a 6.1.2

EF 6.1.2

Il runtime di EF 6.1.2 è stato rilasciato in NuGet a dicembre 2014. Questa versione riguarda principalmente le correzioni di bug. Abbiamo anche accettato un paio di importanti cambiamenti dai membri della community:

  • I parametri della cache delle query possono essere configurati dal file app/web.configuration
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • I metodi SqlFile e SqlResource in DbMigration consentono di eseguire uno script SQL archiviato come file o risorsa incorporata.

EF 6.1.1

Il runtime di EF 6.1.1 è stato rilasciato in NuGet a giugno 2014. Questa versione contiene correzioni per i problemi riscontrati da un certo numero di persone. Tra gli altri:

  • Finestra di progettazione: errore durante l'apertura di EF5 edmx con precisione decimale nella finestra di progettazione di EF6
  • La logica di rilevamento dell'istanza predefinita per LocalDB non funziona con SQL Server 2014

EF 6.1.0

Il runtime di EF 6.1.0 è stato rilasciato in NuGet a marzo 2014. Questo aggiornamento secondario include un numero significativo di nuove funzionalità:

  • Il consolidamento degli strumenti offre un modo coerente per creare un nuovo modello di Entity Framework. Questa funzionalità estende la procedura guidata ADO.NET Entity Data Model per supportare la creazione di modelli Code First, inclusa la reverse engineering da un database esistente. Queste funzionalità erano disponibili in precedenza nella qualità beta in EF Power Tools.
  • La gestione degli errori di commit delle transazioni fornisce CommitFailureHandler che usa la possibilità appena introdotta di intercettare le operazioni delle transazioni. CommitFailureHandler consente il ripristino automatico da errori di connessione durante il commit di una transazione.
  • IndexAttribute consente di specificare gli indici inserendo un [Index] attributo in una proprietà (o proprietà) nel modello Code First. Code First creerà quindi un indice corrispondente nel database.
  • L'API di mapping pubblico fornisce l'accesso alle informazioni fornite da Entity Framework sulla modalità di mapping delle proprietà e dei tipi alle colonne e alle tabelle nel database. Nelle versioni precedenti questa API era interna.
  • La possibilità di configurare gli intercettori tramite il file App/Web.config consente l'aggiunta di intercettori senza ricompilare l'applicazione.
  • System.Data.Entity.Infrastructure.Interception.DatabaseLoggerè un nuovo intercettore che semplifica la registrazione di tutte le operazioni di database in un file. In combinazione con la funzionalità precedente, questo consente di attivare facilmente la registrazione delle operazioni di database per un'applicazione distribuita, senza la necessità di ricompilare.
  • Il rilevamento delle modifiche del modello di migrazioni è stato migliorato in modo che le migrazioni con scaffolding siano più accurate. Anche le prestazioni del processo di rilevamento delle modifiche sono state migliorate.
  • Miglioramenti delle prestazioni, tra cui operazioni ridotte del database durante l'inizializzazione, ottimizzazioni per il confronto di uguaglianza null nelle query LINQ, generazione di viste più veloce (creazione di modelli) in più scenari e materializzazione più efficiente delle entità rilevate con più associazioni.

EF 6.0.2

Il runtime di EF 6.0.2 è stato rilasciato in NuGet a dicembre 2013. Questa versione della patch è limitata alla risoluzione dei problemi introdotti nella versione di EF6 (regressioni in prestazioni/comportamento a partire da EF5).

EF 6.0.1

Il runtime di EF 6.0.1 è stato rilasciato in NuGet nell'ottobre 2013 contemporaneamente con EF 6.0.0, perché quest'ultimo è stato incorporato in una versione di Visual Studio che aveva bloccato alcuni mesi prima. Questa versione della patch è limitata alla risoluzione dei problemi introdotti nella versione di EF6 (regressioni in prestazioni/comportamento a partire da EF5). Le modifiche più importanti riguardano la risoluzione di alcuni problemi di prestazioni durante il riscaldamento dei modelli di Entity Framework. Ciò era importante perché le prestazioni di riscaldamento erano un'area di interesse in EF6 e questi problemi negavano alcuni degli altri miglioramenti delle prestazioni apportati in EF6.

EF 6.0

Il runtime di EF 6.0.0 è stato rilasciato in NuGet a ottobre 2013. Si tratta della prima versione in cui un runtime ef completo è incluso nel pacchetto NuGet EntityFramework che non dipende dai bit ef che fanno parte di .NET Framework. Lo spostamento delle parti rimanenti del runtime nel pacchetto NuGet richiede una serie di modifiche di rilievo per il codice esistente. Per altre informazioni sui passaggi manuali necessari per l'aggiornamento, vedere la sezione Aggiornamento a Entity Framework 6 .

Questa versione include numerose nuove funzionalità. Le funzionalità seguenti funzionano per i modelli creati con Code First o Ef Designer:

  • Async Query e Save aggiunge il supporto per i modelli asincroni basati su attività introdotti in .NET 4.5.
  • La resilienza della connessione consente il ripristino automatico da errori di connessione temporanei.
  • La configurazione basata su codice offre la possibilità di eseguire la configurazione, tradizionalmente eseguita in un file di configurazione, nel codice.
  • La risoluzione delle dipendenze introduce il supporto per il modello di localizzatore di servizi ed è stata rilevata alcune funzionalità che possono essere sostituite con implementazioni personalizzate.
  • La registrazione di intercettazione/SQL offre blocchi predefiniti di basso livello per l'intercettazione di operazioni ef con registrazione SQL semplice basata su.
  • I miglioramenti della testability semplificano la creazione di double di test per DbContext e DbSet quando si usa un framework fittizio o si scrivono double di test personalizzati.
  • DbContext può ora essere creato con un dbConnection già aperto che consente scenari in cui sarebbe utile se la connessione potrebbe essere aperta durante la creazione del contesto, ad esempio la condivisione di una connessione tra componenti in cui non è possibile garantire lo stato della connessione.
  • Il supporto delle transazioni migliorato offre il supporto per una transazione esterna al framework, oltre a modi migliorati per la creazione di una transazione all'interno del framework.
  • Enumerazioni, prestazioni spaziali e migliori in .NET 4.0 : spostando i componenti di base usati per essere in .NET Framework nel pacchetto NuGet di Entity Framework, è ora possibile offrire supporto per enumerazioni, tipi di dati spaziali e miglioramenti delle prestazioni di EF5 in .NET 4.0.
  • Miglioramento delle prestazioni di Enumerable.Contains nelle query LINQ.
  • Tempo di riscaldamento migliorato (generazione di visualizzazioni), soprattutto per i modelli di grandi dimensioni.
  • Pluralizzazione collegabile e servizio di singolarizzazione.
  • Sono ora supportate implementazioni personalizzate di Equals o GetHashCode nelle classi di entità.
  • DbSet.AddRange/RemoveRange offre un modo ottimizzato per aggiungere o rimuovere più entità da un set.
  • DbChangeTracker.HasChanges offre un modo semplice ed efficiente per verificare se sono presenti modifiche in sospeso da salvare nel database.
  • SqlCeFunctions fornisce un equivalente sql Compact a SqlFunctions.

Le funzionalità seguenti si applicano solo a Code First:

  • Le convenzioni code first personalizzate consentono di scrivere convenzioni personalizzate per evitare la configurazione ripetitiva. Viene fornito un'API semplice per convenzioni leggere e alcuni blocchi predefiniti più complessi per consentire di creare convenzioni più complesse.
  • Il mapping code first alle stored procedure di inserimento/aggiornamento/eliminazione è ora supportato.
  • Gli script di migrazioni idempotenti consentono di generare uno script SQL in grado di aggiornare un database in qualsiasi versione fino alla versione più recente.
  • La tabella cronologia delle migrazioni configurabili consente di personalizzare la definizione della tabella della cronologia delle migrazioni. Ciò è particolarmente utile per i provider di database che richiedono il corretto funzionamento dei tipi di dati appropriati e così via.
  • Più contesti per database rimuove la limitazione precedente di un modello Code First per database quando si usano migrazioni o quando Code First ha creato automaticamente il database.
  • DbModelBuilder.HasDefaultSchema è una nuova API Code First che consente la configurazione dello schema di database predefinito per un modello Code First in un'unica posizione. In precedenza lo schema predefinito Code First era hardcoded in "dbo" e l'unico modo per configurare lo schema a cui appartiene una tabella era tramite l'API ToTable.
  • Il metodo DbModelBuilder.Configurations.AddFromAssembly consente di aggiungere facilmente tutte le classi di configurazione definite in un assembly quando si usano classi di configurazione con l'API Code First Fluent.
  • Le operazioni di migrazione personalizzate consentono di aggiungere altre operazioni da usare nelle migrazioni basate su codice.
  • Il livello di isolamento delle transazioni predefinito viene modificato in READ_COMMITTED_SNAPSHOT per i database creati con Code First, consentendo una maggiore scalabilità e un minor numero di deadlock.
  • I tipi di entità e complessi possono ora essere classi annidate.

EF 5.0

Il runtime di EF 5.0.0 è stato rilasciato in NuGet nel mese di agosto 2012. Questa versione introduce alcune nuove funzionalità, tra cui il supporto delle enumerazioni, le funzioni con valori di tabella, i tipi di dati spaziali e vari miglioramenti delle prestazioni.

Entity Framework Designer in Visual Studio 2012 introduce anche il supporto per più diagrammi per modello, colorazione delle forme nell'area di progettazione e importazione batch di stored procedure.

Di seguito è riportato un elenco di contenuto creato appositamente per la versione di EF 5:

EF 4.3.1

Il runtime di EF 4.3.1 è stato rilasciato in NuGet a febbraio 2012 poco dopo EF 4.3.0. Questa versione della patch includeva alcune correzioni di bug per la versione di EF 4.3 e introduceva un migliore supporto localDB per i clienti che usano EF 4.3 con Visual Studio 2012.

Di seguito è riportato un elenco di contenuto che è stato creato appositamente per la versione di EF 4.3.1, la maggior parte dei contenuti forniti per EF 4.1 si applica ancora a EF 4.3 e:

EF 4.3

Il runtime di EF 4.3.0 è stato rilasciato in NuGet a febbraio 2012. Questa versione includeva la nuova funzionalità Migrazioni Code First che consente di modificare in modo incrementale un database creato da Code First man mano che il modello Code First si evolve.

Di seguito è riportato un elenco di contenuto creato appositamente per la versione di EF 4.3, la maggior parte dei contenuti forniti per EF 4.1 è ancora applicabile anche a EF 4.3:

EF 4.2

Il runtime di EF 4.2.0 è stato rilasciato in NuGet a novembre 2011. Questa versione include correzioni di bug per la versione di EF 4.1.1. Poiché questa versione includeva solo correzioni di bug, potrebbe essere stata la versione patch di EF 4.1.2, ma abbiamo scelto di passare alla versione 4.2 per consentire di uscire dai numeri di versione delle patch basati sulla data usati nelle versioni 4.1.x e adottare lo standard di controllo delle versioni semantiche per il controllo delle versioni semantiche .

Di seguito è riportato un elenco di contenuto creato appositamente per la versione di EF 4.2, il contenuto fornito per EF 4.1 è ancora applicabile anche a EF 4.2:

EF 4.1.1

Il runtime di EF 4.1.10715 è stato rilasciato in NuGet a luglio 2011. Oltre alle correzioni di bug, questa versione patch ha introdotto alcuni componenti per semplificare l'uso degli strumenti in fase di progettazione con un modello Code First. Questi componenti vengono usati da Migrazioni Code First (incluso in EF 4.3) e da EF Power Tools.

Si noterà che il numero di versione 4.1.10715 strano del pacchetto. Prima di decidere di adottare il controllo delle versioni semantiche, è stato usato per usare le versioni basate sulla data. Si consideri questa versione come EF 4.1 patch 1 (o EF 4.1.1).

Di seguito è riportato un elenco di contenuto creato per la versione 4.1.1:

EF 4.1

Il runtime di EF 4.1.10331 è stato il primo a essere pubblicato in NuGet nel mese di aprile 2011. Questa versione includeva l'API DbContext semplificata e il flusso di lavoro Code First.

Si noterà il numero di versione strano, 4.1.10331, che avrebbe dovuto essere davvero 4.1. Inoltre è disponibile una versione 4.1.10311 che dovrebbe essere stata 4.1.0-rc (la "rc" sta per 'release candidate'). Prima di decidere di adottare il controllo delle versioni semantiche, è stato usato per usare le versioni basate sulla data.

Ecco un elenco di contenuti che abbiamo messo insieme per la versione 4.1. Gran parte di essa si applica ancora alle versioni successive di Entity Framework:

EF 4.0

Questa versione è stata inclusa in .NET Framework 4 e Visual Studio 2010, ad aprile 2010. Importanti nuove funzionalità di questa versione includevano il supporto POCO, il mapping delle chiavi esterne, il caricamento differita, i miglioramenti della testabilità, la generazione personalizzabile del codice e il flusso di lavoro Model First.

Anche se era la seconda versione di Entity Framework, è stato denominato EF 4 per allinearsi alla versione di .NET Framework fornita con . Dopo questa versione, Entity Framework è stato reso disponibile in NuGet ed è stato adottato il controllo delle versioni semantiche perché non era più associato alla versione di .NET Framework.

Si noti che alcune versioni successive di .NET Framework hanno fornito aggiornamenti significativi ai bit di ENTITY inclusi. In effetti, molte delle nuove funzionalità di EF 5.0 sono state implementate come miglioramenti su questi bit. Tuttavia, per razionalizzare la storia di controllo delle versioni per ENTITY Framework, si continua a fare riferimento ai bit ef che fanno parte di .NET Framework come runtime di EF 4.0, mentre tutte le versioni più recenti sono costituite dal pacchetto NuGet EntityFramework.

EF 3.5

La versione iniziale di Entity Framework è stata inclusa in .NET 3.5 Service Pack 1 e Visual Studio 2008 SP1, rilasciata nel mese di agosto 2008. Questa versione ha fornito il supporto O/RM di base usando il flusso di lavoro Database First.