Sie sind hier: Wissen
Werbung
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 Datenbanktabelle 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)

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 Datenbankschema, 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 Datenbanken 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 Datenbanken) 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 Annotationen 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 Services, kann man LINQ-to-Entities-Abfragen über Webservices 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 POCOs
  • 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 Typkonvertierungen zwischen Datenbankdatentypen 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 Objects – 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.

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