René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

86
René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks

Transcript of René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Page 1: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

René LeupoldIS DeveloperComgate Solutions AG

Entity FrameworkTipps und Tricks

Page 2: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

www.dnug-bern.chGrö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

Page 3: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Agenda

Kontext-LaufzeitAbfragenEDM-DesignerEF Datenbank-ProviderLeistungsoptimierungCode First

Page 4: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Kontext-Laufzeit Web-Anwendungen

HttpContext.Current

Requ

est

Obj

ectC

onte

xt (c

tx)Repository

Repository

Repository

Repository

Page 5: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Kontext-Laufzeit Smart clients

Pro Form

GU

I

ctxForm

Form

Form

Form

ctx

ctx

ctx

Page 6: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Abfragen

Page 7: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

AbfragenLINQ to Entities

IQueryable<T>Verzögerte Ausführung DB

Page 8: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

AbfragenLINQ to Objects

IEnumerable<T>Ausführung im RAM

Page 9: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

AbfragenObjekte mit vielen Eigenschaften

Page 10: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

AbfragenSqlFunctions/EntityFunctions

Page 11: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM Designer

Page 12: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerKonkurrenzierende Namensrichtlinien

Variante Huagati DBML/EDMX Tools

Page 13: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerKonkurrenzierende Namensrichtlinien

Variante ADO.NET Entity Data Model Designer Extension Starter Kit

Download und InstallationProjekt aus Vorlage erstellenManifestdatei anpassenModelGenerationExtension.cs mit Logik befüllenInstallationVS Neustart

Page 14: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerADO.NET Entity Data Model Designer Extension Starter Kit

Projekt aus Vorlage erstellen

Page 15: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerADO.NET Entity Data Model Designer Extension Starter Kit

Manifestdatei anpassen

Page 16: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerADO.NET Entity Data Model Designer Extension Starter Kit

ModelGenerationExtension.cs mit Logik befüllen

Page 17: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerADO.NET Entity Data Model Designer Extension Starter Kit

Nach VS Neustart

Page 18: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Konkurrenzierende Namensrichtlinien

Demo

Page 19: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerBlob-Eigenschaft nachladen

ProblemSpalte aus Tabelle nachladen

LösungsvorschlagBlob-Eigenschaft in eigene Entity auslagern1 : 1 Beziehung modellieren

Page 20: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerBlob-Eigenschaft nachladen

Page 21: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerSpatial Data

Quelle: http://jasonfollas.com

Page 23: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerEigene Code-Generierungsvorlagen

Symbolvorlage erstellenPlatzhalter $edmxInputFile$Vstemplate mit Präfix ADONETArtifactGenerator_ ProjectItem OpenInEditor=„false“Zippen und ins ItemTemplate-Verzeichnis kopieren

Page 24: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Eigene Code-Generierungsvorlagen

Demo

Page 25: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerEigene DDL-Generierungsvorlagen Model First

T4-Template erstellenIn Ordner „Laufwerk:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\Extensions\Microsoft\Entity Framework Tools\DBGen“

kopierenAuswahl über Projekteigenschaften

Page 26: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerEigene DDL-Generierungsvorlagen Model First

Page 27: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Entity Designer Database Generation Power Pack installierenDatenbankprojekt hinzufügen (Name wie Edmx-Datei)Workflow Sync Database Project auswählenAssistent abschliessen

Page 28: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Entity Designer Database Generation Power Pack installieren

Page 29: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Datenbankprojekt hinzufügen (Name wie Edmx-Datei)

Page 30: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Datenbankprojekt hinzufügen (Name wie Edmx-Datei)

Page 31: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Workflow Sync Database Project auswählen

Page 32: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Assistent abschliessen

Page 33: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First DDL-Skript als Projektmappe

Projektmappe

Page 34: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

VoraussetzungenEntity Designer Database Generation Power Pack installierenDatenbankprojekt anlegen (Name wie Edmx-Datei)Workflow Datenbankgenerierung auf Sync Database Project

Page 35: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Änderungen am Modell vornehmen

Page 36: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Workflow Sync Database Project ausführen

Page 37: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Daten/Neuer Schemavergleich

Page 38: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Schemavergleich

Page 39: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Änderung an Datenbank vornehmen

Page 40: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Modell aus der Datenbank aktualisieren

Page 41: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM DesignerModel First/DB First Round trip

Neues Modell mit Projekt synchronisieren

Page 42: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Änderungen vornehmen

EDM DesignerHuagati DBML/EDMXTools Round trip

Page 43: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Model Comparer öffnen

EDM DesignerHuagati DBML/EDMXTools Round trip

Page 44: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Änderungen von CSDL auf SSDL übertragen

EDM DesignerHuagati DBML/EDMXTools Round trip

Page 45: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Änderungen von SSDL auf Datenbank übertragen

EDM DesignerHuagati DBML/EDMXTools Round trip

Page 46: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Change-Script

EDM DesignerHuagati DBML/EDMXTools Round trip

Page 47: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EDM-Elemente um eigene Eigenschaften erweiternAnpassen auf ProzesseIn T4-Vorlagen verwenden

Entity Data Model Designer Extension Starter Kit installieren

Projekt erstellen und Manifestdatei anpassenProperties.cs und PropertiesFactory.cs mit Logik befüllenInstallationT4-Vorlage erstellen und verwenden

EDM DesignerErweitern mit benutzerdefinierten Eigenschaften

Page 48: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Projekt erstellen und Manifestdatei anpassen

EDM DesignerErweitern mit benutzerdefinierten Eigenschaften

Page 49: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Properties.cs und PropertiesFactory.cs mit Logik befüllen

EDM DesignerErweitern mit benutzerdefinierten Eigenschaften

Page 50: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Nach der Installation

EDM DesignerErweitern mit benutzerdefinierten Eigenschaften

Page 51: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

T4-Vorlage erstellen und verwenden

EDM DesignerErweitern mit benutzerdefinierten Eigenschaften

Page 52: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Erweitern mit benutzerdefinierten Eigenschaften

Demo

Page 53: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Am Beispiel MySQL

EF Datenbank-Provider

Page 54: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

MySQL Connector installieren (T4-Vorlage)DevArt dotConnect for MySQL

Bessere Provider-Unterstützung (EdmFunctions)

Modell anlegenSchema definierenDDL Generation Template SSDLToMySQL.tt (VS)Datenbank erstellen

EF Datenbank-ProviderModel First MySQL

Page 55: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Modell anlegen

EF Datenbank-ProviderModel First MySQL

Page 56: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

DDL Generation Template SSDLToMySQL.tt (VS)

EF Datenbank-ProviderModel First MySQL

Page 57: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Datenbank erstellen

EF Datenbank-ProviderModel First MySQL

Page 58: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Modell anlegenMapping erstellenTextdatei für SSDL anlegenBuild Action Embedded ResourceSSDL-Inhalt von Edmx-Datei kopieren und anpassenKompilierenConnection String anpassen

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 59: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Modell anlegen

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 60: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Textdatei für SSDL anlegen

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 61: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Build Action Embedded Resource

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 62: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

SSDL-Inhalt von Edmx-Datei kopieren und anpassen

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 63: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Connection String anpassen

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 64: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Datenbankabhängige HerausforderungenMySQL: Schema entspricht DatenbankOracle: 30 Zeichen-Limit

EF Datenbank-ProviderMehrere Datenbank unterstützen

Page 65: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Leistungsoptimierung

Page 66: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Unterstützung SQL Server ProfilerEF Prof

Hinweise zu Problemen wie SELECT N+1

Huagati Query ProfilerEF Tracing Provider

LeistungsoptimierungProfiler

Page 67: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Kaltstart vermeidenVariante 1: Mit EdmGen.exe erstellenVariante 2. T4 VorlageBeispiel Modell mit 73 Entitäten

LeistungsoptimierungKontext-Initialisierung mit View-Generation

Init0

100

200

300

400

500 449

362

ohne Viewsmit Views

Page 68: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

View

Demo

Page 69: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Cachen von Linq to Entities - Abfragen

LeistungsoptimierungCompiled Query

Page 70: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Wenn keine Änderungsverfolgung notwendig

LeistungsoptimierungNoTracking

Laden0

500

1000

1500

2000

25002054

571

TrackingNoTracking

Page 71: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Nicht die Stärke von ORM

LeistungsoptimierungMassenmanipulation

Update0

200

400

600

800683

6

ORMSQL

Page 72: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Laden vieler verbundener ObjekteEager Loading RessourcenintensivLazy Loading Zeitintensiv

LeistungsoptimierungSpan-Queries

Objektbaum laden0

100020003000400050006000700080009000

3660

7800

9421063

EagerLazyTranslateEinzeln Laden

Page 73: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Ein Schwachpunkt

Demo

Page 74: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

EfCachingProvider (2nd Level Cache)EFTracingProvider (Query-Rewrite simulieren)Paging mit Skip/TakeEntity SQL auf Entity ClientDatenbank

Indizes setzenQuery-Rewrite bei Join-AbfragenDatenbankoptimierungsratgeber verwendenSchrittweise denormalisieren

LeistungsoptimierungWeitere Möglichkeiten

Page 75: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code First

Page 76: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstZugriff auf ObjectContext

Page 77: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Aber: SqlQuery hat Mühe mit ComplexType

Code-FirstSQL ausführen

Page 78: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstEDMX-Datei erstellen

Page 79: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstRead-Only Eigenschaft in Datenbank speichern

Page 80: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstÄnderungen Rückgängig machen

Page 81: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstZugriff auf Cache

Page 82: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Code-FirstIndizes erstellen

Page 84: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

ZusammenfassungBuch-Empfehlungen

ISBN-13: 978-0596807269

ISBN-13: 978-1430227038

Page 85: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

Q&A

Page 86: René Leupold IS Developer Comgate Solutions AG Entity Framework Tipps und Tricks.

© 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.