Frühere Releases von Entity Framework

Die erste Version von Entity Framework wurde 2008 als Teil von .NET Framework 3.5 SP1 und Visual Studio 2008 SP1 veröffentlicht.

Ab Release EF 4.1 wurde es im Lieferumfang des NuGet-Pakets „EntityFramework“ ausgeliefert, derzeit eines der am häufigsten verwendeten Pakete auf NuGet.org.

Zwischen den Versionen 4.1 und 5.0 erweiterte das EntityFramework NuGet-Paket die EF-Bibliotheken, die als Teil von .NET Framework ausgeliefert wurden.

Ab Version 6 wurde EF zu einem Open-Source-Projekt und wurde komplett aus dem .NET Framework ausgegliedert. Das bedeutet, dass Sie, wenn Sie das NuGet-Paket EntityFramework Version 6 zu einer Anwendung hinzufügen, eine vollständige Kopie der EF-Bibliothek erhalten, die nicht von den EF-Bits abhängt, die als Teil von .NET Framework ausgeliefert werden. Dies hat dazu beigetragen, das Tempo der Entwicklung und Bereitstellung neuer Features etwas zu beschleunigen.

Im Juni 2016 haben wir EF Core 1.0 veröffentlicht. EF Core basiert auf einer neuen Codebasis und ist als einfachere und erweiterbarere Version von EF konzipiert. Derzeit ist EF Core der Hauptschwerpunkt der Entwicklung für das Entity Framework-Team bei Microsoft. Dies bedeutet, dass für EF6 keine neuen wichtigen Features geplant sind. EF6 wird jedoch weiterhin als Open-Source-Projekt und als unterstütztes Microsoft-Produkt angeboten.

Hier finden Sie die Liste der früheren Releases, in umgekehrter chronologischer Reihenfolge, mit Informationen zu den neuen Features, die in jedem Release eingeführt wurden.

Update für die EF-Tools in Visual Studio 2017 15.7

Im Mai 2018 haben wir eine aktualisierte Version der EF-Tools als Teil von Visual Studio 2017 15.7 veröffentlicht. Sie enthält Verbesserungen für einige übliche Problempunkte:

  • Korrekturen für einige Fehler beim Benutzeroberflächenzugriff
  • Problemumgehung für die SQL Server-Leistungsregression beim Generieren von Modellen aus vorhandenen Datenbanken #4
  • Unterstützung zum Aktualisieren von Modellen für größere Modelle in SQL Server #185

Eine weitere Verbesserung dieser neuen Version der EF-Tools besteht darin, dass die EF 6.2-Runtime installiert wird, wenn ein Modell in einem neuen Projekt erstellt wird. Bei älteren Versionen von Visual Studio ist es möglich, die EF 6.2-Runtime (sowie alle früheren Version von Entity Framework) zu verwenden, indem Sie die entsprechende Version des NuGet-Pakets installieren.

EF 6.2.0

Die EF 6.2-Runtime wurde im Januar 2017 für NuGet veröffentlicht. Es ist vor allem der Verdienst unserer Community von Open-Source-Mitwirkenden, dass EF 6.2 zahlreiche Fehlerbehebungen und Produktverbesserungen enthält.

Hier ist eine kurze Liste der wichtigsten Änderungen, die die EF 6.2-Runtime betreffen:

  • Startzeit reduzieren, indem abgeschlossene Code First-Modelle aus einem beständigen Cache geladen werden #275
  • Fluent-API zum Definieren von Indizes #274
  • DbFunctions.Like() hinzufügen, um das Schreiben von LINQ-Abfragen zu aktivieren, die in SQL als LIKE übersetzt werden #241
  • Migrate.exe unterstützt jetzt die Option „-script“ #240
  • EF6 funktioniert jetzt mit Schlüsselwerten, die von einer Sequenz in SQL Server generiert wurden #165
  • Updateliste der vorübergehenden Fehler für die SQL Azure-Ausführungsstrategie #83
  • Fehler: Wiederholen von Abfragen oder SQL-Befehlen schlägt mit folgendem Hinweis fehl: „The SqlParameter is already contained by another SqlParameterCollection“ (Der SqlParameter ist bereits in einer anderen SqlParameterCollection enthalten) #81
  • Fehler: Bei der Auswertung von DbQuery.ToString() tritt häufig ein Timeout im Debugger auf #73

EF 6.1.3

Die EF 6.1.3-Runtime wurde im Oktober 2015 für NuGet veröffentlicht. Dieses Release enthält nur Korrekturen für Fehler mit hoher Priorität und Regressionen, die im Release 6.1.2 gemeldet wurden. Die Korrekturen umfassen Folgendes:

  • Abfrage: Regression in EF 6.1.2: „OUTER APPLY“ und komplexere Abfragen für 1:1-Beziehungen und die „let“-Klausel wurden eingeführt.
  • TPT-Problem mit dem Ausblenden der Basisklasseneigenschaft in einer geerbten Klasse
  • DbMigration.Sql schlägt nicht mehr fehl, wenn das Wort „go“ im Text enthalten ist.
  • Sie können jetzt einen Kompatibilitätsflag für die UnionAll- und Intersect-Flatteningunterstützung erstellen.
  • Die Abfrage mit mehreren Includes funktioniert in 6.1.2 nicht (funktioniert in 6.1.1).
  • Die Ausnahme „Sie haben einen Fehler in Ihrer SQL-Syntax“ tritt nach einem Upgrade von EF 6.1.1 auf 6.1.2 auf.

EF 6.1.2

Die EF 6.1.2-Runtime wurde im Dezember 2014 für NuGet veröffentlicht. Diese Version enthält hauptsächlich Fehlerkorrekturen. Wir haben auch ein paar bemerkenswerte Änderungen von Mitgliedern der Community akzeptiert:

  • Abfragecacheparameter können aus der Datei „app/web.configuration“ konfiguriert werden.
    <entityFramework>
      <queryCache size='1000' cleaningIntervalInSeconds='-1'/>
    </entityFramework>
    
  • Mit den Methoden SqlFile und SqlResource für DbMigration können Sie ein SQL-Skript ausführen, das als Datei oder eingebettete Ressource gespeichert ist.

EF 6.1.1

Die EF 6.1.1-Runtime wurde im Juni 2014 für NuGet veröffentlicht. Diese Version enthält Fixes für Probleme, die bei mehreren Benutzer*innen aufgetreten sind. Dazu gehören:

  • Designer: Es tritt ein Fehler beim Öffnen von EF5 EDMX mit Dezimalgenauigkeit im EF6-Designer auf.
  • Die Standardinstanzerkennungslogik für LocalDB funktioniert nicht mit SQL Server 2014.

EF 6.1.0

Die EF 6.1.0-Runtime wurde im März 2014 für NuGet veröffentlicht. Dieses kleinere Update enthält eine erhebliche Anzahl neuer Features:

  • Die Toolkonsolidierung bietet eine einheitliche Methode zur Erstellung eines neuen EF-Modells. Dieses Feature erweitert den Assistenten für ADO.NET Entity Data Model, um das Erstellen von Code First-Modellen zu unterstützen, einschließlich Reverse Engineering aus einer vorhandenen Datenbank. Diese Features waren zuvor in Betaqualität in den EF Power Tools verfügbar.
  • Die Behandlung von Transaktionscommitfehlern stellt den CommitFailureHandler bereit, der die neu eingeführte Möglichkeit zum Abfangen von Transaktionsvorgängen verwendet. Der CommitFailureHandler ermöglicht die automatische Wiederherstellung von Verbindungsfehlern beim Commit einer Transaktion.
  • Mit IndexAttribute können Sie Indizes angeben, indem Sie ein [Index]-Attribut auf eine Eigenschaft (oder mehrere Eigenschaften) in Ihrem Code First-Modell platzieren. Code First erstellt dann einen entsprechenden Index in der Datenbank.
  • Die öffentliche Zuordnungs-API bietet Zugriff auf die Informationen, die EF darüber hat, wie Eigenschaften und Typen Spalten und Tabellen in der Datenbank zugeordnet werden. In früheren Releases war diese API intern.
  • Durch die Möglichkeit zum Konfigurieren von Interceptors über die Datei „App/Web.config“ können Interceptors hinzugefügt werden, ohne die Anwendung neu zu kompilieren.
  • System.Data.Entity.Infrastructure.Interception.DatabaseLogger ist ein neuer Interceptor, der das Protokollieren aller Datenbankvorgänge in einer Datei erleichtert. In Kombination mit dem vorherigen Feature können Sie die Protokollierung von Datenbankvorgängen für eine bereitgestellte Anwendung problemlos aktivieren, ohne dass sie neu kompiliert werden müssen.
  • Die Erkennung von Migrationsmodelländerungen wurde verbessert, sodass Gerüstmigrationen genauer sind. Die Leistung des Änderungserkennungsprozesses wurde ebenfalls verbessert.
  • Leistungsverbesserungen, einschließlich reduzierter Datenbankvorgänge während der Initialisierung, Optimierungen für den Vergleich der NULL-Gleichheit in LINQ-Abfragen, schnellere Ansichtsgenerierung (Modellerstellung) in mehr Szenarios und effizientere Materialisierung nachverfolgter Entitäten mit mehreren Zuordnungen.

EF 6.0.2

Die EF 6.0.2-Runtime wurde im Dezember 2013 für NuGet veröffentlicht. Diese Patchversion ist auf das Beheben von Problemen beschränkt, die im Release EF6 eingeführt wurden (Regressionen in Leistung bzw. Verhalten seit EF5).

EF 6.0.1

Die EF 6.0.1-Laufzeit wurde im Oktober 2013 gleichzeitig mit EF 6.0.0 für NuGet veröffentlicht, da letztere in ein Release von Visual Studio eingebettet wurde, die einige Monate zuvor gesperrt worden war. Diese Patchversion ist auf das Beheben von Problemen beschränkt, die im Release EF6 eingeführt wurden (Regressionen in Leistung bzw. Verhalten seit EF5). Die wichtigsten Änderungen waren die Behebung einiger Leistungsprobleme während des Aufwärmvorgangs für EF-Modelle. Dies war wichtig, da die Aufwärmleistung ein Schwerpunkt in EF6 war und diese Probleme einige der anderen Leistungssteigerungen in EF6 zunichte machten.

EF 6.0

Die EF 6.0.0-Runtime wurde im Oktober 2013 für NuGet veröffentlicht. Dies ist das erste Release, in dem eine vollständige EF-Laufzeit im EntityFramework NuGet-Paket enthalten ist, das nicht von den EF-Bits abhängt, die Teil von .NET Framework sind. Das Verschieben der verbleibenden Teile der Laufzeit in das NuGet-Paket erforderte mehrere Breaking Changes am bestehenden Code. Weitere Informationen zu den manuellen Schritten, die für das Upgrade erforderlich sind, finden Sie im Abschnitt Upgrade auf Entity Framework 6.

Dieses Release enthält zahlreiche neue Features. Die folgenden Features funktionieren für Modelle, die mit Code First oder EF Designer erstellt wurden:

  • Asynchrone Abfragen und Speichern fügt Unterstützung für die aufgabenbasierten asynchronen Muster hinzu, die in .NET 4.5 eingeführt wurden.
  • Die Verbindungsresilienz ermöglicht die automatische Wiederherstellung nach vorübergehenden Verbindungsfehlern.
  • Die codebasierte Konfiguration bietet Ihnen die Möglichkeit, die Konfiguration (die bisher in einer Konfigurationsdatei vorgenommen wurde) im Code auszuführen.
  • Die Abhängigkeitsauflösung führt die Unterstützung für das Service Locator-Muster ein, und wir haben einige Teile der Funktionalität entfernt, die durch eigene Implementierungen ersetzt werden können.
  • Die Abfang- bzw. SQL-Protokollierungsfunktion bietet Low-Level-Bausteine zum Abfangen von EF-Vorgängen mit darauf aufbauender einfacher SQL-Protokollierung.
  • Verbesserungen der Testbarkeit erleichtern das Erstellen von Testdoubles für DbContext und DbSet, wenn ein Pseudoframework verwendet oder eigene Testdoubles geschrieben werden.
  • DbContext kann jetzt mit einer bereits geöffneten DbConnection erstellt werden, was Szenarios ermöglicht, in denen es hilfreich wäre, wenn die Verbindung bei der Erstellung des Kontexts geöffnet sein könnte (z. B. das Freigeben einer Verbindung zwischen Komponenten, bei denen Sie den Status der Verbindung nicht garantieren können).
  • Die verbesserte Transaktionsunterstützung bietet Unterstützung für eine Transaktion außerhalb des Frameworks sowie verbesserte Möglichkeiten zum Erstellen einer Transaktion innerhalb des Frameworks.
  • Enumerationen, räumliche Datentypen und bessere Leistung auf .NET 4.0: Durch das Verschieben der Kernkomponenten aus dem .NET Framework in das EF NuGet-Paket sind wir nun in der Lage, Enumerationsunterstützung, räumliche Datentypen und die Leistungsverbesserungen von EF5 auf .NET 4.0 anzubieten.
  • Verbesserte Leistung von Enumerable.Contains in LINQ-Abfragen
  • Verbesserte Aufwärmzeit (Ansichtsgenerierung), insbesondere für große Modelle
  • Integrierbarer Pluralisierungs- und Singularisierungsdienst.
  • Benutzerdefinierte Implementierungen von Equals oder GetHashCode für Entitätsklassen werden jetzt unterstützt.
  • DbSet.AddRange/RemoveRange bietet eine optimierte Möglichkeit zum Hinzufügen oder Entfernen mehrerer Entitäten aus einem Satz.
  • DbChangeTracker.HasChanges bietet eine einfache und effiziente Möglichkeit, zu sehen, ob ausstehende Änderungen in der Datenbank gespeichert werden müssen.
  • SqlCeFunctions stellt eine SQL Compact-Entsprechung zu SqlFunctions bereit.

Die folgenden Features gelten nur für Code First:

  • Benutzerdefinierte Code First-Konventionen ermöglichen das Schreiben eigener Konventionen, um sich wiederholende Konfigurationen zu vermeiden. Wir bieten eine einfache API für Lightweightkonventionen sowie einige komplexere Bausteine, mit denen Sie kompliziertere Konventionen erstellen können.
  • Code First-Zuordnung zum Einfügen/Aktualisieren/Löschen von gespeicherten Prozeduren wird jetzt unterstützt.
  • Mit Idempotent-Migrationsskripts können Sie ein SQL-Skript generieren, mit dem eine Datenbank in jeder beliebigen Version bis zur neuesten Version upgegradet werden kann.
  • Mit der konfigurierbaren Migrationsverlaufstabelle können Sie die Definition der Migrationsverlaufstabelle anpassen. Dies ist besonders nützlich für Datenbankanbieter, bei denen die entsprechenden Datentypen usw. angegeben werden müssen, damit die Tabelle „Migrationsverlauf“ ordnungsgemäß funktioniert.
  • Das Vorhandensein mehrerer Kontexte pro Datenbank beseitigt die vorherige Einschränkung auf ein Code First-Modell pro Datenbank, wenn Sie Migrationen verwenden oder wenn Code First die Datenbank automatisch für Sie erstellt hat.
  • DbModelBuilder.HasDefaultSchema ist eine neue Code First-API, mit der das Standarddatenbankschema für ein Code First-Modell an einer zentralen Stelle konfiguriert werden kann. Zuvor wurde das Code First-Schema auf „dbo“ hartcodiert, und die einzige Möglichkeit, das Schema, zu dem eine Tabelle gehörte, zu konfigurieren, war über die ToTable-API.
  • Mit der DbModelBuilder.Configurations.AddFromAssembly-Methode können Sie einfach alle Konfigurationsklassen hinzufügen, die in einer Assembly definiert sind, wenn Sie Konfigurationsklassen mit der Code First-Fluent-API verwenden.
  • Mit benutzerdefinierten Migrationsvorgängen können Sie zusätzliche Vorgänge hinzufügen, die in Ihren codebasierten Migrationen verwendet werden.
  • Die Standardtransaktionsisolationsebene wurde für Datenbanken, die mit Code First erstellt wurden, auf READ_COMMITTED_SNAPSHOT geändert, was eine bessere Skalierbarkeit und weniger Deadlocks ermöglicht.
  • Entitäts- und komplexe Typen können jetzt innerhalb von Klassen geschachtelt werden.

EF 5.0

Die EF 5.0.0-Runtime wurde im August 2012 für NuGet veröffentlicht. In diesem Release werden einige neue Features eingeführt, darunter Enumerationsunterstützung, Tabellenwertfunktionen, räumliche Datentypen und verschiedene Leistungsverbesserungen.

Der Entity Framework-Designer in Visual Studio 2012 bietet außerdem Unterstützung für mehrere Diagramme pro Modell, die Einfärbung von Formen auf der Entwurfsoberfläche und den Batchimport von gespeicherten Prozeduren.

Hier ist eine Liste der Inhalte, die wir speziell für das EF 5-Release zusammengestellt haben:

EF 4.3.1

Die EF 4.3.1-Laufzeit wurde im Februar 2012 kurz nach EF 4.3.0 für NuGet veröffentlicht. Diese Patchversion enthielt einige Fehlerkorrekturen für das Release EF 4.3 und führte eine bessere LocalDB-Unterstützung für Kunden ein, die EF 4.3 mit Visual Studio 2012 verwenden.

Hier finden Sie eine Liste von Inhalten, die wir speziell für EF 4.3.1 zusammengestellt haben. Die meisten der für EF 4.1 bereitgestellten Inhalte gelten auch für EF 4.3:

EF 4.3

Die EF 4.3.0-Laufzeit wurde im Februar 2012 für NuGet veröffentlicht. Dieses Release enthält das neue Code First-Migrationsfeature, mit der eine von Code First erstellte Datenbank inkrementell geändert werden kann, wenn sich Ihr Code First-Modell weiterentwickelt.

Hier finden Sie eine Liste von Inhalten, die wir speziell für EF 4.3 zusammengestellt haben. Die meisten der für EF 4.1 bereitgestellten Inhalte gelten auch für EF 4.3:

EF 4.2

Die EF 4.2.0-Laufzeit wurde im November 2011 für NuGet veröffentlicht. Dieses Release enthält Fehlerkorrekturen für das Release EF 4.1.1. Da diese Version nur Fehlerbehebungen enthielt, hätte sie auch das EF 4.1.2-Patchrelease sein können. Wir haben uns aber dafür entschieden, zu Version 4.2 überzugehen, um von den datumsbasierten Patchversionsnummern aus den 4.1.x-Versionen abzurücken und stattdessen den Standard der semantischen Versionierung einzuführen.

Hier finden Sie eine Liste von Inhalten, die wir speziell für EF 4.2 zusammengestellt haben. Die für EF 4.1 bereitgestellten Inhalte gelten auch für EF 4.2:

EF 4.1.1

Die EF 4.1.10715-Laufzeit wurde im Juli 2011 für NuGet veröffentlicht. Zusätzlich zu den Fehlerkorrekturen wurden mit dieser Patchversion einige Komponenten eingeführt, die die Arbeit von Tools zur Entwurfszeit mit einem Code First-Modell erleichtern. Diese Komponenten werden von Code First-Migrationen (enthalten in EF 4.3) und den EF Power Tools verwendet.

Sie haben sicherlich die merkwürdige Versionsnummer des Pakets, 4.1.10715, bemerkt. Wir haben früher datumsbezogene Patchversionen verwendet, bevor wir uns entschieden haben, die semantische Versionierung zu übernehmen. Betrachten Sie diese Version als EF 4.1 Patch 1 (oder EF 4.1.1).

Hier ist eine Liste der Inhalte, die wir für das Release 4.1.1 zusammengestellt haben:

EF 4.1

Die EF 4.1.10331-Laufzeit wurde im April 2011 erstmals auf NuGet veröffentlicht. Dieses Release enthält die vereinfachte DbContext-API und den Code First-Workflow.

Sie haben sicherlich die merkwürdige Versionsnummer 4.1.10331 bemerkt, die eigentlich 4.1 lauten sollte. Außerdem gibt es eine Version 4.1.10311, die eigentlich 4.1.0-rc heißen sollte (das „rc“ steht für „Release Candidate“). Wir haben früher datumsbezogene Patchversionen verwendet, bevor wir uns entschieden haben, die semantische Versionierung zu übernehmen.

Hier finden Sie eine Liste der Inhalte, die wir für das Release 4.1 zusammengestellt haben. Vieles davon gilt auch für spätere Releases von Entity Framework:

EF 4.0

Dieses Release wurde im April 2010 im .NET Framework 4 und Visual Studio 2010 aufgenommen. Wichtige neue Features in diesem Release sind die POCO-Unterstützung, die Fremdschlüsselzuordnung, Lazy Loading, Verbesserungen der Testbarkeit, anpassbare Codegenerierung und der Model First-Workflow.

Obwohl es das zweite Release von Entity Framework war, wurde es EF 4 genannt, um es an die Version des .NET Framework anzupassen, mit der es ausgeliefert wurde. Nach diesem Release haben wir damit begonnen, Entity Framework über NuGet verfügbar zu machen und die semantische Versionierung einzuführen, da wir nicht mehr an die .NET Framework Version-gebunden waren.

Beachten Sie, dass einige nachfolgende Versionen von .NET Framework mit wichtigen Updates für die enthaltenen EF-Bits ausgeliefert wurden. Tatsächlich wurden viele der neuen Features von EF 5.0 als Verbesserungen für diese Bits implementiert. Um jedoch den Versionsverlauf für EF zu rationalisieren, bezeichnen wir die EF-Bits, die Teil von .NET Framework sind, weiterhin als EF 4.0-Laufzeit, während alle neueren Versionen aus dem EntityFramework NuGet-Paket bestehen.

EF 3.5

Die erste Version von Entity Framework wurde in .NET 3.5 Service Pack 1 und Visual Studio 2008 SP1 aufgenommen, die im August 2008 veröffentlicht wurden. Dieses Release bietet grundlegende O/RM-Unterstützung mithilfe des Database First-Workflows.