Ist ADO.NET EntityFramework das bessere LINQ?

50 %
50 %
Information about Ist ADO.NET EntityFramework das bessere LINQ?
How-to & DIY

Published on February 23, 2009

Author: dd.dotnet

Source: slideshare.net

Description

Ist ADO.NET EntityFramework das bessere LINQ?

Ist ADO.NET EntityFramework das bessere LINQ? VISUAL WORLD, Annaberger Str. 240, 09125 Chemnitz E-Mail: [email_address] , Web: http://www.visual-world.de

Übersicht Einleitung Vorstellung des Referenten LINQ-to-… Idee des Objekt-Relationalen Mappings (ORM) LINQ-to-SQL und ADO.NET Entity Framework (EF) Praktische Beispiele Geschwindigkeitsvergleich zwischen LINQ, EF und Typisierten Datasets

Einleitung

Vorstellung des Referenten

LINQ-to-…

Idee des Objekt-Relationalen Mappings (ORM)

LINQ-to-SQL und ADO.NET Entity Framework (EF)

Praktische Beispiele

Geschwindigkeitsvergleich zwischen LINQ, EF und Typisierten Datasets

Einleitung Ziele dieses Vortrags Erster Kontakt mit dem Entity Framework und LINQ-to-SQL Unterschied zwischen dem Entity Framework und LINQ-to-SQL aufzeigen Diskussion am späteren Abend 

Ziele dieses Vortrags

Erster Kontakt mit dem Entity Framework und LINQ-to-SQL

Unterschied zwischen dem Entity Framework und LINQ-to-SQL aufzeigen

Diskussion am späteren Abend 

Vorstellung des Referenten - Robert Meyer Softwareentwickler in der Firma Visual World seit 2007 Entwicklung von Individualsoftware im Bereich Geschäftssoftware (ERP, CRM und Warenwirtschaftssysteme) Schwerpunkte: Datenbanken (SQL Server ab 2000) Softwarearchitektur und –optimierung WinForms und WPF Datenzugriffstechnologien Microsoft Certified Professional für .NET 2.0

- Robert Meyer

Softwareentwickler in der Firma Visual World seit 2007

Entwicklung von Individualsoftware im Bereich Geschäftssoftware (ERP, CRM und Warenwirtschaftssysteme)

Schwerpunkte:

Datenbanken (SQL Server ab 2000)

Softwarearchitektur und –optimierung

WinForms und WPF

Datenzugriffstechnologien

Microsoft Certified Professional für .NET 2.0

Themenwahl „ Ist ADO.NET EntityFramework das bessere LINQ?“ Was ist falsch an dieser Frage? Wieso dieses Thema?

„ Ist ADO.NET EntityFramework das bessere LINQ?“

Was ist falsch an dieser Frage?

Wieso dieses Thema?

LINQ-to-…

LINQ-to-…

Idee des Objekt-Relationalen Mappings (ORM) Was ist ein OR-Mapper? „ Objekt-Relationales Mapping ist die Abbildung von Geschäftsobjekten im Hauptspeicher auf Datensätzen in relationalen Datenbanktabellen zum Zwecke der Objektpersistenz“ Objekt-Relationales Mapping ist die Abbildung zwischen Objekten und Datensätzen bzw. Klassen und Tabellen.

Was ist ein OR-Mapper?

„ Objekt-Relationales Mapping ist die Abbildung von Geschäftsobjekten

im Hauptspeicher auf Datensätzen in relationalen Datenbanktabellen

zum Zwecke der Objektpersistenz“

Objekt-Relationales Mapping ist die Abbildung zwischen Objekten und Datensätzen bzw. Klassen und Tabellen.

Idee des Objekt-Relationalen Mappings (ORM)

Idee des Objekt-Relationalen Mappings (ORM) Schlagwörter: Mapping-Szenarien Abfragesprachen Object Query Language (OQL) in VOA und Genome Hibernate Query Language (HQL) in nHibernate Language Integrated Query (LINQ) in Linq-to-Sql und EntityFramework Ladestrategien Lazy Loading Eager Loading

Schlagwörter:

Mapping-Szenarien

Abfragesprachen

Object Query Language (OQL) in VOA und Genome

Hibernate Query Language (HQL) in nHibernate

Language Integrated Query (LINQ) in Linq-to-Sql und EntityFramework

Ladestrategien

Lazy Loading

Eager Loading

Idee des Objekt-Relationalen Mappings (ORM) Schlagwörter: - Forward Engineering - Reverse Engineering Change Tracking Caching Objektcontainer (ObjectContext, DataContext)

Schlagwörter:

- Forward Engineering

- Reverse Engineering

Change Tracking

Caching

Objektcontainer (ObjectContext, DataContext)

Idee des Objekt-Relationalen Mappings (ORM) Abfragesprachen Jeder OR-Mapper hat eine (eigene) Abfragesprache SQL ist als Abfragesprache nicht geeignet, das sich SQL auf die Datenbankstruktur (Tabellennamen etc.) bezieht. Trend geht zur Language Integrated Query (LINQ), durch die Integration in den Sprachsyntax von C# und Visual Basic 2008 LINQ kann durch dokumentierte Schnittstellen auch von Drittanbietern genutzt werden (LINQ-to-MySql, LINQ-to-SAP, LINQ-to-Amazon und viele mehr)

Abfragesprachen

Jeder OR-Mapper hat eine (eigene) Abfragesprache

SQL ist als Abfragesprache nicht geeignet, das sich SQL auf die Datenbankstruktur (Tabellennamen etc.) bezieht.

Trend geht zur Language Integrated Query (LINQ), durch die Integration in den Sprachsyntax von C# und Visual Basic 2008

LINQ kann durch dokumentierte Schnittstellen auch von Drittanbietern genutzt werden (LINQ-to-MySql, LINQ-to-SAP, LINQ-to-Amazon und viele mehr)

Idee des Objekt-Relationalen Mappings (ORM) Ladestrategien Übernehmen der Entscheidung wann Daten zu laden sind Lazy Loading bzw. Delayed Loading Nachladen von Abhängigkeiten bei Bedarf Standard bei allen OR-Mappern Eager Loading Abhängigkeiten werden direkt mit geladen Muss explizit ausgeführt werden Entscheidungskriterien sind: Datenmenge Werden die Daten wirklich benötigt?

Ladestrategien

Übernehmen der Entscheidung wann Daten zu laden sind

Lazy Loading bzw. Delayed Loading

Nachladen von Abhängigkeiten bei Bedarf

Standard bei allen OR-Mappern

Eager Loading

Abhängigkeiten werden direkt mit geladen

Muss explizit ausgeführt werden

Entscheidungskriterien sind:

Datenmenge

Werden die Daten wirklich benötigt?

Idee des Objekt-Relationalen Mappings (ORM) Ladestrategien Beispiel für Eager Loading

Ladestrategien

Beispiel für Eager Loading

Idee des Objekt-Relationalen Mappings (ORM) Forward Engineering / Reverse Engineering Forward Engineering (Code First) Wird nicht von allen OR-Mappern unterstüzt (LINQ unterstützt z.B. Forward Engineering, EF nicht) Vorgang: Es werden zuerst die Geschäftsobjekte (Klassen etc.) erstellt und daraus wird danach die Datenbank erstellt. Reverse Engineering (Database First) Wird von vielen OR-Mappern unterstützt (LINQ, EF, nHibernate) Vorgang: Es wird zuerst die Datenbank erstellt und daraus ergeben sich die Geschäftsobjekte Problematik Übernehmen von Änderung im Datenbankschema (z.B. Spaltentypen) in die Geschäftsobjekte (Klassen etc.)

Forward Engineering / Reverse Engineering

Forward Engineering (Code First)

Wird nicht von allen OR-Mappern unterstüzt (LINQ unterstützt z.B. Forward Engineering, EF nicht)

Vorgang: Es werden zuerst die Geschäftsobjekte (Klassen etc.) erstellt und daraus wird danach die Datenbank erstellt.

Reverse Engineering (Database First)

Wird von vielen OR-Mappern unterstützt (LINQ, EF, nHibernate)

Vorgang: Es wird zuerst die Datenbank erstellt und daraus ergeben sich die Geschäftsobjekte

Problematik

Übernehmen von Änderung im Datenbankschema (z.B. Spaltentypen) in die Geschäftsobjekte (Klassen etc.)

Idee des Objekt-Relationalen Mappings (ORM) Change Tracking ORM-Werkzeuge überwachen Änderungen in den Objekten (Change Tracking) Grund: Beim speichern der Objekte werden nur die veränderten oder neuen Objekte in die Datenbank übernommen. Ein guter OR-Mapper aktualisiert nur die betroffenen Spalten und nicht den ganzen Datensatz in der Datenbank

Change Tracking

ORM-Werkzeuge überwachen Änderungen in den Objekten (Change Tracking)

Grund: Beim speichern der Objekte werden nur die veränderten oder neuen Objekte in die Datenbank übernommen.

Ein guter OR-Mapper aktualisiert nur die betroffenen Spalten und nicht den ganzen Datensatz in der Datenbank

Idee des Objekt-Relationalen Mappings (ORM) Objektcontainer Ein Objektcontainer hält die Objekte im RAM Objektcontainer werden vor der ersten Abfrage erzeugt Abfrage muss in dem Objektcontainer stattfinden Objektcontainer merken sich den Ausgangszustand eines Objekts Objektcontainer haben je nach OR-Mapper andere Namen z.B.: ObjectContext (im Entity Framework) DataContext (in LINQ-to-SQL)

Objektcontainer

Ein Objektcontainer hält die Objekte im RAM

Objektcontainer werden vor der ersten Abfrage erzeugt

Abfrage muss in dem Objektcontainer stattfinden

Objektcontainer merken sich den Ausgangszustand eines Objekts

Objektcontainer haben je nach OR-Mapper andere Namen z.B.:

ObjectContext (im Entity Framework)

DataContext (in LINQ-to-SQL)

Idee des Objekt-Relationalen Mappings (ORM) Caching Objektcontainer speichern Objekte zwischen Verhindert unnötiges neu laden der Objekte Einige OR-Mapper legen benutzen hierfür auch den Second Level Cache (z.B. nHibernate)

Caching

Objektcontainer speichern Objekte zwischen

Verhindert unnötiges neu laden der Objekte

Einige OR-Mapper legen benutzen hierfür auch den Second Level Cache (z.B. nHibernate)

LINQ-to-SQL und ADO.NET Entity Framework Entstehung: LINQ-to-SQL und das EntityFramework wurden parallel entwickelt LINQ-to-SQL wurde mit dem .NET Framework 3.5 ausgeliefert EntityFramework kam mit dem SP1 für das .NET 3.5 Framework Das EntityFramework ist entstanden aus dem früheren Ansatz „Object Spaces“ Das EntityFramework ist keine Weiterentwicklung von LINQ-to-SQL

Entstehung:

LINQ-to-SQL und das EntityFramework wurden parallel entwickelt

LINQ-to-SQL wurde mit dem .NET Framework 3.5 ausgeliefert

EntityFramework kam mit dem SP1 für das .NET 3.5 Framework

Das EntityFramework ist entstanden aus dem früheren Ansatz „Object Spaces“

Das EntityFramework ist keine Weiterentwicklung von LINQ-to-SQL

LINQ-to-SQL und ADO.NET Entity Framework Technische Unterschiede: - LINQ-to-SQL arbeitet direkt auf dem Datenbankschema EntityFramework verwendet die Entity-Relationship-Modellierung (ERM) LINQ-to-SQL hat nur einen Provider zu MSSQL (Nicht-Offenlegung der Schnittstellen), während das EF theoretisch für alle Datenbank nutzbar ist. LINQ-to-SQL unterstützt die Abfragesprache LINQ und direktes SQL, das EF nutzt LINQ Entity SQL (eSQL) und LINQ in Form von LINQ-to-Entities. LINQ-to-SQL unterstützt nur 1:1 Abbildung zwischen Tabellen und Objekten, beim EF sind beliebige Abbildungen möglich.

Technische Unterschiede:

- LINQ-to-SQL arbeitet direkt auf dem Datenbankschema

EntityFramework verwendet die Entity-Relationship-Modellierung (ERM)

LINQ-to-SQL hat nur einen Provider zu MSSQL (Nicht-Offenlegung der Schnittstellen), während das EF theoretisch für alle Datenbank nutzbar ist.

LINQ-to-SQL unterstützt die Abfragesprache LINQ und direktes SQL, das EF nutzt LINQ Entity SQL (eSQL) und LINQ in Form von LINQ-to-Entities.

LINQ-to-SQL unterstützt nur 1:1 Abbildung zwischen Tabellen und Objekten, beim EF sind beliebige Abbildungen möglich.

LINQ-to-SQL und ADO.NET Entity Framework Technische Unterschiede: LINQ-to-SQL unterstützt sowohl Reverse als auch Forward Engineering, EF hingegen unterstützt momentan nur Reverse Engineering. EF und LINQ-to-SQL verwenden in den Designern beide XML, aber absolut unterschiedliche Formate.

Technische Unterschiede:

LINQ-to-SQL unterstützt sowohl Reverse als auch Forward Engineering, EF hingegen unterstützt momentan nur Reverse Engineering.

EF und LINQ-to-SQL verwenden in den Designern beide XML, aber absolut unterschiedliche Formate.

LINQ-to-SQL und ADO.NET Entity Framework Gemeinsamkeit: - Sowohl EF als auch LINQ-to-SQL unterstützen Lazy und Eager Loading. In beiden Lösungen hält der Kontext (Objektkontext (EF) und Datakontext (LINQ-to-SQL) die Objekte zusammen. Beide unterstützen den LINQ Syntax

Gemeinsamkeit:

- Sowohl EF als auch LINQ-to-SQL unterstützen Lazy und Eager Loading.

In beiden Lösungen hält der Kontext (Objektkontext (EF) und Datakontext (LINQ-to-SQL) die Objekte zusammen.

Beide unterstützen den LINQ Syntax

LINQ-to-SQL und ADO.NET Entity Framework Einsatzszenarien: LINQ-to-SQL für einfach Mapping-Szenarien und kleine Anwendungen Entity Framework ist für komplexe Anwendungsfälle gedacht. Entity Framework ist jedoch viel lockerer Verknüpfung als das LINQ-to-SQL Model und kann somit leichter angepasst werden.

Einsatzszenarien:

LINQ-to-SQL für einfach Mapping-Szenarien und kleine Anwendungen

Entity Framework ist für komplexe Anwendungsfälle gedacht.

Entity Framework ist jedoch viel lockerer Verknüpfung als das LINQ-to-SQL Model und kann somit leichter angepasst werden.

Praktische Beispiele Vergleich der Objektmodelle Von LINQ-to-SQL und Entity Framework

Vergleich der Objektmodelle

Von LINQ-to-SQL und Entity Framework

Praktische Beispiele Geschwindigkeitsvergleich zwischen Entity Framework LINQ-to-SQL Stark typisierte DataSets

Geschwindigkeitsvergleich zwischen

Entity Framework

LINQ-to-SQL

Stark typisierte DataSets

Vorschau Entity Framework Ankündigungen für Entity Framework Version 2 in .NET 4.0 Unterstützung von Forward Engineering (kein Round Trip Engineering) Model Definied Functions Unterstützung von Table Valued Functions (TVF) Unterstützung von StoredProcedures (Rückgabe von Scalarwerten z.B. String) …

Ankündigungen für Entity Framework Version 2 in .NET 4.0

Unterstützung von Forward Engineering (kein Round Trip Engineering)

Model Definied Functions

Unterstützung von Table Valued Functions (TVF)

Unterstützung von StoredProcedures (Rückgabe von Scalarwerten z.B. String)



Ende Vielen Dank für Eure Aufmerksamkeit! Quellen: Kontakt: CodeProject (Bilder) Robert Meyer .Net 3.5 Crashkurs (ISBN: 978-3-86645-512-2) [email_address] Diverse Foren https://www.xing.com/profile/Robert_Meyer10

Vielen Dank für Eure Aufmerksamkeit!

Quellen: Kontakt:

CodeProject (Bilder) Robert Meyer

.Net 3.5 Crashkurs (ISBN: 978-3-86645-512-2) [email_address]

Diverse Foren https://www.xing.com/profile/Robert_Meyer10

Add a comment

Related presentations

Related pages

ADO.NET Entity Framework

ADO.NET Entity Framework.NET Framework 4 Andere Versionen ... Übersicht über das Entity Framework; Ich möchte LINQ verwenden ...
Read more

LINQ to SQL vs. ADO.NET Entity Framework

ADO.NET Entity Framework and LINQ to Entities http ... People are asking me why they should wait around for an updated to ADO.NET Entity Framework ...
Read more

LINQ-to-SQL versus ADO.NET Entity Framework | heise Developer

... und dem ADO.NET Entity Framework ... LINQ-to-SQL und die ADO.NET Entity Framework weisen trotz der getrennten Entwicklungslinien gewisse ...
Read more

The ADO.NET Entity Framework Overview

ADO.NET Entity Framework: Object Services LINQ to Entities: ... The ADO.NET Entity Framework has enough metadata about the entities in the system that it ...
Read more

Entity Framework – Wikipedia

ADO.NET Entity Framework (bis ca. 2012), Entity Framework; Maintainer: CodePlex (Version 6), GitHub (Version 7) Entwickler: ... LINQ Selectors; Methode ...
Read more

LINQ-to-SQL versus ADO.NET Entity Framework | heise Developer

Auch ein Jahr nach dem Erscheinen des ADO.NET Entity Framework ... Mein ausführlicher Vergleich zwischen LINQ-to-SQL und dem ADO.NET Entity Framework ...
Read more

c# - EntityFramework VS pure Ado.Net - Stack Overflow

EntityFramework VS pure Ado.Net. ... c# linq entity-framework stored-procedures ado.net. share | improve this question. asked Mar 11 '14 at 14:35. Crossman ...
Read more

37 Einführung in das ADO.NET Entity Framework

11 LINQ: 12 Arbeiten mit ... 37 Einführung in das ADO.NET Entity Framework. ... besseren und gut wartbaren Code zu schreiben. Hier sind durch ADO.NET ...
Read more

Entity Framework VS LINQ to SQL VS ADO.NET with stored ...

Entity Framework VS LINQ to SQL VS ADO.NET with stored procedures? ... Performance Comparision of linq 2sql and Ado.net Entity Framework with stored Procedure?
Read more