Upload
eleonore-bordes
View
135
Download
0
Embed Size (px)
Citation preview
René LeupoldIS DeveloperComgate Solutions AG
Entity FrameworkEin Überblick
www.dnug-bern.ch Grösste aktive .NET User Group der SchweizRegelmässige Treffen mit Schwerpunktthemen
Nächste EventsMo, 30.5.2011User Experience Crash KursDo, 9.6.2011 DotNetNuke
.NET User Group Bern
Agenda
ÜberblickArchitekturVorgehensweisenPhilosophie EDM-Designer/Code FirstVergleich ObjectContext/DbContextZusammenfassung
Überblick
ÜberblickWas ist neu mit Visual Studio 2010 SP1
VS 2010 SP1 != EF 4.1Performance
EDM DesignerEdmGen.exe
Anpassungen STE Code-Generierungsvorlage
ÜberblickWas ist neu mit EF 4.1
Code First (DbContext)Installation
Via NuGet
Installation ADO.NET Entity Framework 4.1
Überblick Unterstützte Datenbanken
DB2 (OpenLink, IBM)Firebird (OpenLink, Firebird)Informix (OpenLink, IBM)MySQL (MySQL, DevArt, OpenLink)Oracle (Oracle, DevArt, Progress, OpenLink)Postgres (DevArt, OpenLink, Npsql)SQLite (DevArt, System.Data.SqlLite)Sybase (Progress, OpenLink, Sybase)Synergy (Synergex)U2 (IBM)VistaDB
Architektur
ArchitekturEntity Data Model (EDM)
Entwicklung auf Anwendungs-ebeneUnabhängig vom logischenModell des SpeichersSeparation of Concerns
CSDLMSLSSDL
Kernkonzept ERM
EDM
Conceptual (CSDL)
Mapping (MSL)
Storage (SSDL)
ArchitekturEntity Framework 4.0
Object Services
Entity Client
Provider
ADO.NET
SQL eSQLLinq to Entities
ArchitekturEntity Framework 4.1
DbContext
Connection
Entity Framework 4.0
Object Services
Model Builder
Vorgehensweisen
VorgehensweisenBottom up
DB First
DB Schema Mapping Klassen
Bottom up
Demo
VorgehensweisenMiddle out
Model First
Mapping
Klassen
DB Schema
Middle out
Demo
VorgehensweisenTop down
Code First
Klassen Mapping DB Schema
Top Down
Demo
VorgehensweisenTop down
Code First
VorgehensweisenMeet in the middle
Problematisch
Mapping
Klassen
DB Schema
EDM-Designer/Code First
PhilosophieEDM-Designer
ModellzentriertKonfigurationCode GenerierungAnpassbar mit T4 und WorkflowsDouble derived pattern (partial)
EDM Designer
Demo
PhilosophieCode First
CodezentriertConventions over ConfigurationPatterns and Practices
PhilosophieCode First Konventionen
Mehr als 20 KonventionenDie Konventionen verstehen ist wichtigKönnen entfernt werden
Hinzufügen von Konventionen mit EF 4.1 nicht möglich
PhilosophieCode First Konventionen
PhilosophieCode First Konfiguration
Fluent Mapping API
PhilosophieCode First Konfiguration
Data Annotations
Vergleich ObjectContext/DbContext
VergleichObjectContext/DbContext
ConnectionStringEntitätscontainerLaden abhängiger ObjekteValidierungDirektes SQLCacheChange trackingOptimistic Concurrency
VergleichObjectContext/DbContext
ConnectionString
VergleichObjectContext/DbContext
Entitätscontainer
VergleichObjectContext/DbContext
Laden abhängiger Objekte
VergleichObjectContext/DbContext
Validierung
VergleichObjectContext/DbContext
Direktes SQL
VergleichObjectContext/DbContext
Cache
VergleichObjectContext/DbContext
Change tracking
VergleichObjectContext/DbContext
Optimistic Concurrency
Wann EDM-DesignerModellzentriert
DB FirstDatenbank bestehtDetailanforderungen auf Ebene DBKonkurrenzierende Richtlinien DB
Model FirstRoundtrip ermöglichenArchitektur und Coding-Standards auf Ebene PersistenzmodellVerwenden von T4-Vorlagen und WorkflowsEDM mit eigenen Metadaten für pragmatische Modelle
Wann Code FirstCodezentriert
Der Code beschreibt das Modell (DDD)Fehlende Akzeptanz zum EDM-DesignerModellierung mit UML/DSLDB Schema leitet sich aus Klassenmodell ab
CodezentriertVorteile
Sehr Effizient durch KonventionenData Annotations als Grundlage für DB SchemaValidierung mit SaveChanges
Über alle Layer :-) Data Annotations und Fluent Mapping API kombinierbar
Fluent Mapping API gewinnt beim DB SchemaExplizites Laden mit FilterVereinfachtes Change Tracking
Code FirstHerausforderungen
Kein DB Schema UpdateUmweg über Dev/Int/Prod
Pluggable Conventions in der CTP5 hängen gebliebenKein Support für Create, Update und Delete-ProzedurenKeine Unterstützung für
Compiled QueriesEntity SQL (nur über IObjectContextAdapter)
Keine Erstellung von FK IndizesMinimale Rechte für den Datenbankbenutzer auf Prod
Zusammenfassung
EF Entwicklung ist aktuell losgelöst von SP´sEDM ist eine Implementierungsform des ERMDbContext ist ein Wrapper um den ObjectContext
Einfluss durch DbModelBuilderEF unterstützt nun alle VorgehensweisenDbContext für Code FirstEDM-Designer
ObjectContext oder DbContext
ZusammenfassungMapping-SzenarienMapping DB First Model First Code First
1 : m bidirectional Ja (Default) Ja (Default) Ja
1 : m unidirectional Ja (FK-A) Ja (FK-A) Ja
m : n Ja Ja Ja
1 : 1 Ja Ja Ja
Selbstreferenzierung Ja Ja Ja
1 Klasse : m Tabellen Ja Ja Ja (mb)
m Klassen : 1 Tabelle (CT) Ja Ja Ja
m Klassen : 1 Tabelle Split Ja Bedingt Ja (mb)
TPH Ja Bedingt Ja (Default)
TPT Ja Ja (Default) Ja (mb)
TPC Bedingt Bedingt Bedingt (mb)
ZusammenfassungLinks
Channel 9 Interview mit Dr. Peter ChenADO.NET Team BlogEntity Framework Design BlogBlog Arthur Vickers (EF Developer Team)Meine Erfahrungen mit EFMapping-Szenarien Code First (Beispiele)
ZusammenfassungBuch-Empfehlungen
ISBN-13: 978-0596807269
ISBN-13: 978-1430227038
Q&A
© 2011 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.
The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after
the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS, IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.