René Leupold IS Developer Comgate Solutions AG Entity Framework Ein Überblick.

Post on 06-Apr-2015

135 views 0 download

Transcript of René Leupold IS Developer Comgate Solutions AG Entity Framework Ein Überblick.

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

Ü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)

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.