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 EF4.1 è stata fornita 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 e si è spostato completamente fuori banda da .NET Framework. Ciò significa che quando si aggiunge il pacchetto NuGet di EntityFramework versione 6 a un'applicazione, si ottiene una copia completa della libreria EF che non dipende dai bit EF che vengono forniti come parte di .NET Framework. Ciò ha contribuito a accelerare il ritmo dello sviluppo e della distribuzione di nuove funzionalità.

Nel giugno 2016 è stato rilasciato EF Core 1.0. EF Core si basa su una nuova codebase ed è progettata come versione più leggera ed estendibile di EF. Attualmente EF Core è l'obiettivo principale dello sviluppo per il team di Entity Framework in Microsoft. Ciò significa che non sono previste nuove funzionalità principali per EF6. Tuttavia EF6 è ancora gestito come progetto open source e un 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 nell'ottobre 2015. Questa versione contiene solo correzioni a difetti con priorità elevata e regressioni segnalate 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 non riesce 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 nel dicembre 2014. Questa versione riguarda principalmente le correzioni di bug. Abbiamo accettato anche un paio di modifiche importanti 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 ef 6.1.1 è stato rilasciato in NuGet a giugno 2014. Questa versione contiene correzioni per i problemi rilevati da un numero di persone. Tra gli altri:

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

EF 6.1.0

Il runtime di EF 6.1.0 è stato rilasciato in NuGet nel 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 EF. Questa funzionalità estende la procedura guidata ADO.NET Entity Data Model per supportare la creazione di modelli Code First, inclusa la progettazione inversa da un database esistente. Queste funzionalità sono state precedentemente disponibili 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 di transazione. 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 su come vengono mappate le proprietà e i 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 intercettatoreche semplifica il log di tutte le operazioni di database in un file. In combinazione con la funzionalità precedente, questo consente di passare facilmente alla registrazione delle operazioni di database per un'applicazione distribuita, senza la necessità di ricompilare.
  • Il rilevamento delle modifiche dei modelli di migrazione è stato migliorato in modo che le migrazioni con scaffolding siano più accurate; sono state migliorate anche le prestazioni del processo di rilevamento delle modifiche.
  • Miglioramenti delle prestazioni , incluse le operazioni di database ridotte durante l'inizializzazione, le ottimizzazioni per il confronto di uguaglianza Null nelle query LINQ, la generazione di visualizzazioni più veloci (creazione di modelli) in più scenari e la materializzazione più efficiente delle entità monitorate con più associazioni.

EF 6.0.2

Il runtime di EF 6.0.2 è stato rilasciato in NuGet nel dicembre 2013. Questa versione di patch è limitata alla risoluzione dei problemi introdotti nella versione EF6 (regressioni in prestazioni/comportamento 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 di patch è limitata alla risoluzione dei problemi introdotti nella versione EF6 (regressioni in prestazioni/comportamento da EF5). Le modifiche più importanti erano per risolvere alcuni problemi di prestazioni durante il riscaldamento per i modelli EF. Questo è stato importante perché le prestazioni di riscaldamento erano un'area di attenzione in EF6 e questi problemi negavano alcune delle altre prestazioni apportate 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 richiedeva 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 and 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 consente di eseguire la configurazione, che è stata 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 una parte di funzionalità che può essere sostituita con implementazioni personalizzate.
  • La registrazione di intercettazione/SQL offre blocchi predefiniti di basso livello per l'intercettazione delle operazioni EF con registrazione SQL semplice basata sulla parte superiore.
  • I miglioramenti della verificabilità semplificano la creazione di doppie di test per DbContext e DbSet quando si usa un framework fittizio o si scrivono doppie di test.
  • DbContext può ora essere creato con un dbConnection già aperto che consente scenari in cui potrebbe essere utile se la connessione può 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 e per migliorare le modalità di creazione di una transazione all'interno di Framework.
  • Enumerazioni, prestazioni spaziali e migliori su .NET 4.0 : spostando i componenti di base che usano per essere presenti in .NET Framework nel pacchetto NuGet EF è ora possibile offrire supporto enumerazione, tipi di dati spaziali e miglioramenti delle prestazioni da EF5 in .NET 4.0.
  • Miglioramento delle prestazioni di Enumerable.Contains in query LINQ.
  • Miglioramento del tempo di riscaldamento (generazione di visualizzazioni), soprattutto per i modelli di grandi dimensioni.
  • Pluralizzazione & collegabile 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. È disponibile un'API semplice per convenzioni leggere e alcuni blocchi predefiniti più complessi che consentono di creare convenzioni più complesse.
  • Il mapping code first alle stored procedure di inserimento/aggiornamento/eliminazione è ora supportato.
  • Gli script delle 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 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 elimina 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 sul codice.
  • Il livello di isolamento delle transazioni predefinito viene modificato in READ_COMMITTED_SNAPSHOT per i database creati usando Code First, consentendo una maggiore scalabilità e un minor numero di deadlock.
  • I tipi di entità e complessi possono ora essere classi nestedinside.

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 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 di patch includeva alcune correzioni di bug per la versione 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 contenuti messi insieme in modo specifico per la versione di EF 4.3.1, la maggior parte del contenuto fornito per EF 4.1 si applica ancora anche a EF 4.3:

EF 4.3

Il runtime di EF 4.3.0 è stato rilasciato in NuGet a febbraio 2012. Questa versione includeva la nuova funzionalità di 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 contenuti messi insieme in modo specifico per la versione di EF 4.3, la maggior parte del contenuto fornito per EF 4.1 si applica ancora 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 ef 4.1.1. Poiché questa versione includeva solo correzioni di bug, poteva 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 semantic versionsing per il controllo delle versioni semantiche.

Di seguito è riportato un elenco di contenuti messi insieme in modo specifico per la versione di EF 4.2, il contenuto fornito per EF 4.1 si applica ancora 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 di 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 ef Power Tools.

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

Ecco un elenco di contenuti che abbiamo messo insieme per la versione 4.1.1:

EF 4.1

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

Noterai 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 (l'acronimo di 'rc' è '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 messi 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à in questa versione includevano il supporto POCO, il mapping delle chiavi esterne, il caricamento differita, i miglioramenti della testabilità, la generazione di codice personalizzabile 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 con cui è stata fornita. Dopo questa versione, Entity Framework è stato reso disponibile in NuGet ed è stato adottato il controllo delle versioni semantiche poiché non era più associato alla versione di .NET Framework.

Si noti che alcune versioni successive di .NET Framework sono state fornite con aggiornamenti significativi ai bit ef inclusi. In realtà, molte delle nuove funzionalità di EF 5.0 sono state implementate come miglioramenti su questi bit. Tuttavia, per razionalizzare il brano 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 di base di O/RM tramite il flusso di lavoro Database First.