Entity Framework Ein Überblick René Leupold IS Developer Comgate Solutions AG .NET User Group Bern www.dnug-bern.ch Grösste aktive .NET User Group der Schweiz Regelmässige Treffen mit Schwerpunktthemen Nächste Events Mo, 30.5.2011 Do, 9.6.2011 User Experience Crash Kurs DotNetNuke Agenda Überblick Architektur Vorgehensweisen Philosophie EDM-Designer/Code First Vergleich ObjectContext/DbContext Zusammenfassung Überblick Überblick VS 2010 SP1 != EF 4.1 Performance EDM Designer EdmGen.exe Anpassungen STE Code-Generierungsvorlage Überblick Code First (DbContext) Installation Via NuGet Installation ADO.NET Entity Framework 4.1 Überblick DB2 Firebird Informix MySQL Oracle Postgres SQLite Sybase Synergy U2 VistaDB (OpenLink, IBM) (OpenLink, Firebird) (OpenLink, IBM) (MySQL, DevArt, OpenLink) (Oracle, DevArt, Progress, OpenLink) (DevArt, OpenLink, Npsql) (DevArt, System.Data.SqlLite) (Progress, OpenLink, Sybase) (Synergex) (IBM) Architektur Architektur Entwicklung auf Anwendungsebene Unabhängig vom logischen Modell des Speichers Separation of Concerns CSDL MSL SSDL Kernkonzept ERM EDM Architektur Architektur DbContext Entity Framework 4.0 Vorgehensweisen Vorgehensweisen DB First Demo Bottom up Vorgehensweisen Model First Demo Middle out Vorgehensweisen Code First Demo Top Down Vorgehensweisen Code First Vorgehensweisen Problematisch EDM-Designer/Code First Philosophie Modellzentriert Konfiguration Code Generierung Anpassbar mit T4 und Workflows Double derived pattern (partial) Demo EDM Designer Philosophie Codezentriert Conventions over Configuration Patterns and Practices Philosophie Mehr als 20 Konventionen Die Konventionen verstehen ist wichtig Können entfernt werden Hinzufügen von Konventionen mit EF 4.1 nicht möglich Philosophie Philosophie Fluent Mapping API Philosophie Data Annotations Vergleich ObjectContext/DbContext Vergleich ConnectionString Entitätscontainer Laden abhängiger Objekte Validierung Direktes SQL Cache Change tracking Optimistic Concurrency Vergleich ConnectionString Vergleich Entitätscontainer Vergleich Laden abhängiger Objekte Vergleich Validierung Vergleich Direktes SQL Vergleich Cache Vergleich Change tracking Vergleich Optimistic Concurrency Wann EDM-Designer DB First Datenbank besteht Detailanforderungen auf Ebene DB Konkurrenzierende Richtlinien DB Model First Roundtrip ermöglichen Architektur und CodingStandards auf Ebene Persistenzmodell Verwenden von T4Vorlagen und Workflows EDM mit eigenen Metadaten für pragmatische Modelle Wann Code First Der Code beschreibt das Modell (DDD) Fehlende Akzeptanz zum EDM-Designer Modellierung mit UML/DSL DB Schema leitet sich aus Klassenmodell ab Codezentriert Sehr Effizient durch Konventionen Data Annotations als Grundlage für DB Schema Validierung mit SaveChanges Über alle Layer :-) Data Annotations und Fluent Mapping API kombinierbar Fluent Mapping API gewinnt beim DB Schema Explizites Laden mit Filter Vereinfachtes Change Tracking Code First Kein DB Schema Update Umweg über Dev/Int/Prod Pluggable Conventions in der CTP5 hängen geblieben Kein Support für Create, Update und Delete-Prozeduren Keine Unterstützung für Compiled Queries Entity SQL (nur über IObjectContextAdapter) Keine Erstellung von FK Indizes Minimale Rechte für den Datenbankbenutzer auf Prod Zusammenfassung EF Entwicklung ist aktuell losgelöst von SP´s EDM ist eine Implementierungsform des ERM DbContext ist ein Wrapper um den ObjectContext Einfluss durch DbModelBuilder EF unterstützt nun alle Vorgehensweisen DbContext für Code First EDM-Designer ObjectContext oder DbContext Zusammenfassung Mapping 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) Zusammenfassung Channel 9 Interview mit Dr. Peter Chen ADO.NET Team Blog Entity Framework Design Blog Blog Arthur Vickers (EF Developer Team) Meine Erfahrungen mit EF Mapping-Szenarien Code First (Beispiele) Zusammenfassung ISBN-13: 978-0596807269 ISBN-13: 978-1430227038 © 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.