Sie sind hier:
Wissen
Telefon (Mo-Fr 9 bis 16 Uhr):
0201/649590-0
|
Kontaktformular
MENU
Medien
Übersicht
Lexikon/Glossar
Spickzettel
Weblog
Konferenzvorträge
Fachbücher
Fachartikel
Leserportal
Autoren gesucht!
Literaturtipps
Praxisnahe Fallbeispiele
Downloads
Newsletter
.NET
Startseite
.NET 8.0
.NET 7.0
.NET 6.0
.NET 5.0
.NET Core
.NET 4.0/4.5.x/4.6.x
.NET 3.0/3.5
.NET 2.0
.NET-Lexikon
Programmiersprachen
Entwicklerwerkzeuge
Klassenreferenz
Softwarekomponenten
Windows Runtime
World Wide Wings-Demo
Versionsgeschichte
Codebeispiele
ASP.NET
Artikel
Bücher
Schulung & Beratung
Konferenzen/Events
ASP.NET
Startseite
Lexikon
Sicherheit
Konfiguration
Global.asax
Tracing
Technische Beiträge
Klassenreferenz
Programmiersprachen
Entwicklerwerkzeuge
Softwarekomponenten
Forum
Schulung & Beratung
PowerShell
Startseite
Commandlet-Referenz
Codebeispiele
Commandlet Extensions
Versionsgeschichte
Schulungen+Beratung
Windows
Startseite
Windows Runtime (WinRT)
Windows PowerShell
Windows Scripting
Windows-Schulungen
Windows-Lexikon
Windows-Forum
Scripting
Startseite
Lexikon
FAQ
Bücher
Architektur
Skriptsprachen
Scripting-Hosts
Scripting-Komponenten
COM/DCOM/COM+
ADSI
WMI
WMI-Klassenreferenz
Scripting-Tools
WSH-Editoren
Codebeispiele
.NET-Scripting
Forum
Schulung & Beratung
Nutzer
Anmeldung/Login
Buchleser-Registrierung
Gast-Registrierung
Hilfe
Website-FAQ
Technischer Support
Site Map
Tag Cloud
Suche
Kontakt
Erklärung des Begriffs: ADO.NET Entity Framework (EF)
Begriff
ADO.NET Entity Framework
Abkürzung
EF
Eintrag zuletzt aktualisiert am
04.04.2022
Zur Stichwortliste unseres Lexikons
Was ist
ADO.NET Entity Framework
?
ADO.NET Entity Framework ist ein Objekt-Relationaler Mapper (
ORM
) zur Abbildung von relationalen
Datenbank
tabelle auf .NET-Objektstrukturen.
Microsoft Objekt-Relationalen Mappen (
ORM
) gibt es in zwei Ausprägungen: Das klassische ADO.NET Entity Framework läuft nur auf dem klassischen
.NET Framework
und daher nur auf Windows. Das neue
Entity Framework Core
(EF Core) lief ursprünglich auf allen .NET-Varianten (
.NET Framework
,
.NET Core
,
Mono
und
Xamarin
). Die neueren Versionen
Entity Framework Core
(EF Core) laufen aber nur noch auf den aktuellsten .NET-Versionen.
Versionsgeschichte
ADO.NET Entity Framework 1.0
ist erschienen am 14.08.2008 (in .NET Framework 3.5 Service Pack 1)
ADO.NET Entity Framework 4.0
ist erschienen am 12.04.2010 (in .NET Framework 4.0. Eine Version 2.0 und 3.0 gab es nie!)
ADO.NET Entity Framework 4.1 ist erschienen am 13.04.2011 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 4.2 ist erschienen am 01.11.2011 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 4.3 ist erschienen am 09.02.2012 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 4.4 ist erschienen am 11.08.2012 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 5.0 ist erschienen am 11.08.2012 (Erweiterung auf nuget.org zu dem in .NET Framework 4.5 und höher veröffentlichten Entity Framework / wurde nicht nur über Nuget, sondern auch mit Visual Studio 2012 ausgeliefert)
ADO.NET Entity Framework 6.0 ist erschienen am 17.10.2013 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework / wird nicht nur über Nuget, sondern auch mit Visual Studio 2013 und höher ausgeliegert)
ADO.NET Entity Framework 6.1 ist erschienen am 17.03.2014 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 6.2 ist erschienen am 26.10.2017 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework)
ADO.NET Entity Framework 6.3 ist erschienen am 23.09.2019 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework, läuft nun auch auf .NET Core)
ADO.NET Entity Framework 6.4 ist erschienen am 03.12.2019 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework, läuft nun auch auf .NET Core)
ADO.NET Entity Framework 6.5 ist erschienen am 14.06.2024 (Erweiterung auf nuget.org zu dem in .NET Framework 4.x veröffentlichten Entity Framework, läuft nun auch auf .NET Core)
Hinweise:
Ursprünglich sollte das ADO.NET Entity Framework schon mit
.NET 3.5
erscheinen, das Projekt verspätete sich jedoch.
1.0: Microsoft lieferte das ADO.NET Entity Framework erstmals mit
.NET 3.5
Service Pack
1 und Visual Studio 2008
Service Pack
1 aus.
4.0: In
.NET 4.0
und
Visual Studio 2010
war die zweite Version des ADO.NET Entity Framework enthalten mit der Versionsnummer 4.0. In dieser Version gibt es erhebliche Erweiterungen und Verbesserungen. Seit Version 4.1 ist das Entity Framework von .NET entkoppelt und hat eigene Release-Zyklen. Entity Framework ist nun ein Open Soure-Projekt wird über nuget.org verbreitet.
Informationen zum ADO.NET Entity Framework
Die zentrale Datenzugriffsschnittstelle in .NET ist seit
.NET 3.5
Service Pack
1 ist das ADO.NET Entity Framework, das einerseits die bestehende ADO.NET-Infrastruktur auf das Abstraktionsniveau der konzeptionellen Datenmodellierung hievt und andererseits einen weiteren Objekt-Relational Mapper (
ORM
) anbietet. Das ADO.NET Entity Framework ist aber keine Weiterentwicklung des mit
.NET 3.5
erschienenen
ORM
-Werkzeugs
LINQ-to-SQL
, sondern ein fast komplett anderes (neues) Produkt, das von einem anderen Entwicklungsteam parallel zu
LINQ-to-SQL
entwickelt wurde und nun hausintern bei Microsoft um die Kunden konkurriert. Das Entity Framework ist entstanden aus dem früheren Ansatz »Object Spaces«.
Das ADO.NET Entity Framework ist eine weitere (kuriose) Episode in der langen Geschichte »
Objekt-Relationales Mapping
bei Microsoft«. Mit Object Spaces und dem
ORM
im SQL-Server-basierten
Dateisystem
WinFS
ist Microsoft gescheitert – unter anderem deshalb, weil Object Spaces und
WinFS
zwei unterschiedliche Ansätze für eine sehr ähnliche Aufgabenstellung waren. Mit dem Entity Framework und dem
ORM
in LINQ (
LINQ-to-SQL
) gibt es nun wieder zwei verschiedene Ansätze.
LINQ-to-SQL
arbeitet direkt auf dem
Datenbank
schema, nicht auf dem konzeptuellen Modell, das bei der Entity-Relationship-
Modellierung
(
ERM
) verwendet wird. Das Entity Framework hingegen bietet das gleiche Abstraktionsniveau wie die
ERM
.
Vergleich
LINQ-to-SQL
und die ADO.NET Entity Framework Object Services
LINQ-to-SQL
und die ADO.NET Entity Framework Object Services weisen trotz der getrennten Entwicklungslinien gewisse Ähnlichkeiten auf. In beiden Architekturen hält ein sogenannter Kontext (
LINQ-to-SQL
: »Datenkontext«, Entity Framework: »Objektkontext«) die .NET-Objekte zusammen und bietet den Einstiegspunkt für LINQ-Abfragen.
LINQ-to-SQL
bietet aber insgesamt weniger Optionen als das ADO.NET Entity Framework mit dem dazugehörenden LINQ-Dialekt
LINQ-to-Entities
.
Wesentliche Unterschiede zwischen
LINQ-to-SQL
und dem ADO.NET Entity Framework sind aber:
Für
LINQ-to-SQL
gilt die Einschränkung, dass Microsoft selbst nur einen Provider für
Microsoft SQL Server
liefert und durch die Nicht-Offenlegung der Schnittstellen auch verhindern will, dass andere Hersteller Provider entwickeln. Das .NET Entity Framework hingegen hat Microsoft für andere Anbieter geöffnet, sodass hier andere Provider verfügbar sind.
LINQ-to-SQL
unterstützt nur
Microsoft SQL Server
. Für das Entity Framework ist Unterstützung für viele
Datenbank
en angekündigt.
LINQ-to-SQL
bietet als Abfragesprache LINQ oder direktes SQL. Das Entity Framework bietet neben LINQ
Entity SQL
(eSQL), einen datenbankneutralen SQL-Dialekt, der auf der konzeptuellen Ebene arbeitet, aber nur SELECT-Befehle anbietet.
LINQ-to-SQL
unterstützt nur die 1:1-Abbildung zwischen Tabellen und Objekten. Das Entity Framework unterstützt beliebige Abbildungen.
LINQ-to-SQL
unterstützt
Vererbung
nur mit einer Tabelle mit Diskriminatoren (Filtered Mapping). Das Entity Framework unterstützt beliebige Abbildungen und auch horizontales und vertikales Mapping.
Das ADO.NET Entity Framework unterstützt Mapping auch auf Tabellenebene (d.h. auch ohne
Objekt-Relationales Mapping
).
LINQ-to-SQL
bietet das nicht.
LINQ-to-SQL
unterstützt neben
Reverse Engineering
(d.h. die Erstellung von Geschäftsobjekten aus
Datenbank
en) auch
Forward Engineering
(d.h. die Erstellung der
Datenbank
aus Geschäftsobjekten). Das ADO.NET Entity Framework unterstützt kein
Forward Engineering
, sondern nur
Reverse Engineering
.
Das ADO.NET Entity Framework bietet im Gegensatz zu
LINQ-to-SQL
die
Serialisierung
kompletter Objektbäume. Bei
LINQ-to-SQL
sind Assoziationen nicht serialisierbar.
Beide Modelle verwenden in der Grundeinstellung
Lazy Loading
und bieten optional
Eager Loading
. Beim
Lazy Loading
lädt
LINQ-to-SQL
die verbundenen Objekte automatisch bei Bedarf, während das Entity Framework hier von dem Entwickler verlangt, diese explizit per Code anzufordern. Hingegen hat das Entity Framework wieder den Vorteil, dass man
Eager Loading
für jede einzelne Abfrage definieren kann, während in
LINQ-to-SQL
diese Einstellung global für den Datenkontext vorhanden ist.
Der Objekt-Relationale Designer ist in beiden Fällen anders. Der
LINQ-to-SQL
-Designer erzeugt .dbml-Dateien, der
EDM
-Designer .edmx-Dateien. Das verwendete
XML
-Format ist ganz verschieden.
Die Geschäftsobjekte im Entity Framework brauchen die Klasse
System.Data
.Objects.DataClasses.EntityObject als Basisklasse. Hier ist
LINQ-to-SQL
flexibler, weil keine Basisklasse benötigt wird.
In
LINQ-to-SQL
kann man das Mapping wahlweise im Programmcode durch
Annotation
en oder in einer externen
XML
-Datei erstellen. Entity Framework unterstützt nur das Mapping durch
XML
-Dateien.
Mithilfe eines weiteren Bausteins, den
ADO.NET Data Service
s, kann man
LINQ-to-Entities
-Abfragen über
Webservice
s an ein entferntes System senden und dort ausführen lassen. Für
LINQ-to-SQL
gibt es diese Möglichkeit nicht.
Auf der Ebene der Programmierschnittstelle gibt es Unterschiede, z. B. SubmitChanges() in
LINQ-to-SQL
entspricht SaveChanges() im ADO.NET Entity Framework.
Entity Framework Version 4 in
.NET 4.0
:
Unterstützung für
Forward Engineering
/Code-First (Erzeugen der
Datenbank
auf Basis des Models aus dem Designer heraus. Aber kein Round Trip Engineering bei Veränderungen, d.h. Dann muss die
Datenbank
erst komplett gelöscht werden)
Persistence Ignorance: Unterstützung für
ORM
mit
POCO
s
Berechnete Eigenschaften (Model Definied Functions)
Implizites Nachladen (
Lazy Loading
)
Einfacheres Anpassen der Codegenerieren (Codegeneration ist ein Workflow der
Windows Workflow Foundation
)
Unterstützung für Table Valued Functions (TVF)
…
ADO.NET Entity Framework versus Dataset
Beim ADO.NET Entity Framework sind transportieren typisierte Objekte die Daten, bei der direkten Arbeit mit ADO.NET Datasets sind diese untypisiert. Untypisierte Objektcontainer haben den Nachteil, dass man
Typkonvertierung
en zwischen
Datenbank
datentypen und .NET-Datentypen selbst vornehmen muss. Auch muss man den "null"-Fall abfangen (vgl. die bereits in diesem Buch in Kapitel TODO aufgezeigten Herausforderung bez. DBNull und Nothing).
Ein vergleich in der gleichen "Liga" wäre damit das
ORM
mit dem typisierten Dataset zu vergleichen. Auch hier bietet das Entity Framework einige Vorteile:
Der Objektcontainer sind nicht von Dataset abgeleitet; es ist sogar möglich, ganz einfache .NET-Klassen (sogenannte
Plain Old CLR Object
s –
POCO
) zu verwenden, die gar keine Basisklasse besitzen.
LINQ-Befehle werden nicht auf geladenen Objekten im RAM ausgeführt, sondern in den meisten Fällen in SQL-Befehle umgesetzt und direkt in der
Datenbank
ausgeführt.
Die Programmierung ist insgesamt eleganter und prägnanter.
Querverweise zu anderen Begriffen im Lexikon
Windows Workflow Foundation (WF)
Objekt-Relationales Mapping (ORM)
Entity Framework Core (EFC)
Plain Old CLR Object (POCO)
ADO.NET Data Service
Microsoft SQL Server (MSSQL)
Reverse Engineering
Forward Engineering
Visual Studio 2010 (VS2010)
Typkonvertierung
LINQ-to-Entities (L2E)
.NET Framework
Serialisierung
Eager Loading
Lazy Loading
Service Pack (SP)
Modellierung
LINQ-to-SQL (LTS)
System.Data
Dateisystem
Entity SQL (ESQL)
Annotation
Webservice
.NET Core
Vererbung
Datenbank (DB)
.NET 4.0
.NET 3.5
Xamarin
Mono
Windows File System (WinFS)
Plain Old CLR Object (POCO)
Entity Relationship-Modell (ERM)
Extensible Markup Language (XML)
Entity Data Model (EDM)
Objekt-Relationales Mapping (ORM)
Beratung & Support
Beratung/Consulting: Umstellung/Migration/Umstieg von ADO.NET Entity Framework auf Entity Framework Core
Beratung/Consulting: ADO.NET Entity Framework-Leistung / Entity Framework-Performance: Optimierung von Entity Framework-Datenzugriffen
Beratung/Consulting: Barrierefreiheit nach European Accessibility Act (EAA)
Beratung/Consulting: Design und Usability ("User Experience - UX")
Beratung/Consulting: Einführung von DevOps mit Continuous Integration (CI) und Continuous Delivery (CD) in Ihrer Softwareentwicklung
Beratung/Consulting: Review Ihres Softwareentwicklungsprozesses
Beratung/Consulting: WPF-Leistung / WPF-Performance: Optimierung der Windows Presentation Foundation (WPF)
Beratung/Consulting: .NET/C# und Java/JEE im Vergleich: Welche Softwareentwicklungsplattform ist besser?
Beratung/Consulting: Cloud-Computing - Pro und Contra
Beratung/Consulting: Programmcodereview
Beratung/Consulting: .NET-Performanceprobleme / Leistungsprobleme
Beratung/Consulting: Azure DevOps Server / Azure DevOps Services - Review
Beratung/Consulting: Einführung von Testautomatisierung, Unit Testing und Test Driven Development (TDD) in Ihrer Softwareentwicklung
Beratung/Consulting: ASP.NET-Leistung / ASP.NET-Performance
Beratung/Consulting: Design und Usability ("User Experience - UX") von modernen Webanwendungen
Beratung/Consulting: JavaScript-Alternativen (TypeScript, Dart, CoffeeScript)
Beratung/Consulting: Design und Usability ("User Experience - UX") von XAML-Anwendungen (WPF, UWP, WinUI, Xamarin, MAUI)
Beratung/Consulting: Microsoft SQL Server-Performanceprobleme / Datenbankoptimierung
Beratung/Consulting: Microsoft-Lizensierung
Beratung/Consulting: Sicherheitsanalyse/Sicherheitsreview
Beratung/Consulting: WCF-Leistung / WCF-Performance: Optimierung der Windows Communication Foundation (WCF)
Beratung/Consulting: Einsatz der Microsoft Azure-Cloud-Plattform als Alternative zu eigenen Servern und klassischem Hosting
Beratung/Consulting: Webanwendungen optimieren und skalieren (Website-Performance verbessern)
Beratung/Consulting: Benutzerschnittstellentechnik auswählen (UI-/Frontend-Techniken)
Beratung/Consulting: Microsoft SQL Server, Oracle oder MongoDB - Planung, Installation und Konfiguration
Anfrage für Beratung/Consulting zu ADO.NET Entity Framework EF
Gesamter Beratungsthemenkatalog
Technischer Support zum ADO.NET Entity Framework EF
Schulungen zu diesem Thema
ADO.NET Entity Framework (EF) Code-based Modelling (alias Code First/Code Only)
ADO.NET Entity Framework (EF) mit Oracle - Objekt-Relationales Mapping für Oracle-Datenbanken
ADO.NET Entity Framework (EF) / Entity Framework Core (EF Core) - Performance-Tuning / Leistungsoptimierung
ADO.NET Entity Framework (EF) - Objekt-Relationales Mapping
Visual Studio Tipps & Tricks - Effizienter Programmieren mit Visual Studio
Hybride Anwendungen mit .NET und CefSharp (Einbindungen von Webanwendungen in WPF- und Windows Forms-Desktopanwendungen)
Refactoring von .NET Legacy Code
.NET-Reflection: Codeanalyse und Codegenerierung (System.Reflection, System.CodeDom)
Refactoring von Java-Programmcode
Microsoft Excel für Anwender - Effektiv arbeiten mit Excel
Refactoring von Programmcode in C, C++, C#, Java, Kotlin, JavaScript, TypeScript, Python, Go oder Rust
Effective Java
Entity Framework Core 7.0 (EF Core 7.0) - Änderungen und Neuerungen gegenüber Entity Framework Core 6.0
Entity Framework Core 6.0 (EF Core 6.0) - Änderungen und Neuerungen gegenüber Entity Framework Core 5.0
UML2 vertieft mit Zertifizierung
Entity Framework Core 5.0 (EF Core 5.0) - Änderungen und Neuerungen gegenüber Entity Framework Core 3.1/3.0
User Experience Essentials für Product Owner: Den richtigen Input liefern und UX Konzepte bewerten können
Digitale Barrierefreiheit in IT-Projekten nach BITV
Entity Framework Core 8.0/9.0 (EF Core 8.0/9.0): Objekt-Relationales Mapping (ORM) für .NET 8.0/9.0 (komplettes Wissen)
Offlinefähige und installierbare Cross-Plattform-Lösungen mit Angular
Managed Extensibility Framework (MEF) - Modulare/erweiterbare .NET-Anwendungen
Microsoft Word für Anwender - Effektiv arbeiten mit Word
Microsoft Outlook für Anwender - Effektiv arbeiten mit Outlook
Chef
Windows Communication Foundation (WCF) - Aufbauwissen
.NET-/.NET Core-Entwickler-Update 2019
Visual Basic .NET für Umsteiger von VBA/VB 4/5/6
Umstieg auf Entity Framework Core 8.0/9.0 (Umstellung/Migration von Entity Framework 6.0/7.0/8.0)
.NET im Überblick für Softwareentwickler
.NET 3.5-Update - Die Neuerungen in .NET Framework 3.5 und Visual Studio 2008 im Überblick
Anfrage für eine individuelle Schulung zum Thema ADO.NET Entity Framework EF
Gesamter Schulungsthemenkatalog
Bücher zu diesem Thema
Effizienter Datenzugriff mit Entity Framework Core: Datenbankprogrammierung mit C# für .NET Framework, .NET Core und Xamarin
Programmieren mit dem ADO.NET Entity Framework
Alle unsere aktuellen Fachbücher
E-Book-Abo für ab 99 Euro im Jahr