Building & Connecting Know-how 16.-17. Februar 2011, München Inheritance Strategien mit dem Entity Framework • TPT, TPC, TPH mit DB First, Model First und Code First 1.0 Partner: Veranstalter: Über René Leupold • • • • Organisator .NET User Group Bern Mehrfacher MCPD und MCTS Comgate Solutions AG http://www.databinding.net Weg zum Entity Framework VS 2008 Weg zum Entity Framework VS 2008 SP1 Die Vision Die Realität in VS 2008 SP1 Eine Frage ans Publikum • Wer verwendet: – DataReader – Datasets – Linq to SQL – Entity Framework – NHibernate – Andere O/R-Mapper – VS 2008? Agenda • • • • • • • Einführung Begriffe im Zusammenhang Wie war es in .NET 3.5 SP1 Szenarien (TPT, TPC, TPH) Optimierungsmöglichkeiten Methodenwahl/Tipps und Tricks Ressourcen Building & Connecting Know-how 16.-17. Februar 2011, München Einführung Partner: Veranstalter: EF/NH – Ein Überblick • Ein kleiner Teil aus der Vortragsserie Das Beispiel Abgrenzung • Einführung in Code First • Bezug auf NHibernate • Ultimativer Weg Building & Connecting Know-how 16.-17. Februar 2011, München Begriffe Zum Thema Partner: Veranstalter: ORM impedance mismatch • Unterschiedliche Paradigmen zwischen OO und Relationalen Systemen • O/R Mapper bildet die Schicht dazwischen • Kann zu Problemen führen – Wartung – Verständlichkeit – Performanz Polymorphie • Beschreibt die Fähigkeit, unterschiedliche Datentypen anzunehmen Table per hierarchie (TPH) • Synonym: Single table inheritance Table per type (TPT) – Synonyme: class table inheritance – Vertikale Partitionierung Table per class (TPC) – Synonyme: concrete table inheritance, Table per concrete type – Horizontale Partitionierung Methoden • • • • Top down Middle out Bottom up Meet in the Middle Top down • Synonyme – Forward Engineering – Code First • Klassen zuerst • Code-Generierung – Mapping – DB-Schema Middle out • Synonyme – Model First • Mapping zuerst • Code-Generierung – Klassen – DB-Schema Bottom up • Synonyme – Reverse Engineering • DB-Schema zuerst • Code-Generierung – Mapping – Klassen Meet in the middle • Synonyme – n/a • DB-Schema und Klassen zuerst • Code-Generierung – Mapping • Mögliche Ursache – Einseitige Sicht von Architekt und DBA Unterstützte Methoden Methode Top down Middle out Bottom up Meet in the middle Code First (CTP5 - DbContext) Model First (EF 4), DbContext mit UML Generate from Database (EF 1), DbContext mit EDMX und T4 Garantie für ein nerviges Projekt Building & Connecting Know-how 16.-17. Februar 2011, München Wie war es in .NET 3.5 SP1 Partner: Veranstalter: Mapping Mapping TPT TPH (simpel) TPH (Das Beispiel) TPC Fehler 2078 (manuelle Anpassung EDMX) Fehler 11007 (manuelle Anpassung EDMX) Methoden Methode Top down Middle out Bottom up Generate from Database Generiertes SQL Das Beispiel (TPT) tpt.Product.ToList(); Unterschied is/OfType tpt.Product.Where(p => p is Hardcover).ToList(); Unterschied is/OfType tpt.Product.OfType<Hardcover>().ToList(); Ausführungsplan Aus Entity SQL IN SELECT VALUE p.ID FROM TestModel35.Dispatchings AS p WHERE p.ID IN { 1,2,3,4,5,6,7,8 } wird SQL OR SELECT [Extent1].[ID] AS [ID] FROM [dbo].[Dispatching] AS [Extent1] WHERE ([Extent1].[ID] = 1) OR ([Extent1].[ID] = 2) OR ([Extent1].[ID] = 3) OR ([Extent1].[ID] = 4) OR ([Extent1].[ID] = 5) OR ([Extent1].[ID] = 6) OR ([Extent1].[ID] = 7) OR ([Extent1].[ID] = 8) Building & Connecting Know-how 16.-17. Februar 2011, München Szenarien Partner: Veranstalter: TPT TPT • DB First – 1:1 Beziehung zwischen Tabellen (1:n möglich, aber ) • Model First – Standard Template • Code First • Herausforderung – Joins TPH TPH • DB First – Diskriminatorspalte • Model First – Manuelle Korrekturen notwendig • Code First – Default • Herausforderung – CheckConstraint bilden, Null TPC TPC • DB First – Manuelle Anpassungen notwendig • Model First – Kein passendes Template vorhanden • Code First – Aktuell noch ein paar Bugs in der CTP5 • Herausforderung Identity – GUID, Manuell, Unterschiedliche Zählereinstellungen Building & Connecting Know-how 16.-17. Februar 2011, München Optimierung Partner: Veranstalter: 2 Welten • EF (Als Vertreter OO) – Compiled Query – Vorwiegend Suchresultate: NoTracking – Paging (Skip/Take) – View Generation – 2nd Level Cache (EFCachingProvider) – ObjectContext.ExecuteStoreQuery / DbContext.Database.SqlQuery – Lazy Loading – EFTracingProvider, EFProf Relationale Datenbanksysteme • Tuningprozess (ohne BS, NW, HW) Informationsmanagement Datenbankdesign Applikationsumgebung Datenbankzugriff Datenbankkonfiguration Konkret • In virtuellen Umgebungen die Auslastung prüfen • Indexierung • SQL überarbeiten • Schrittweise Denormalisieren • Für TPT bedingt Indexierte Views (OfType) • SQL Server Profiler/Datenbankoptimierungsratgeber Building & Connecting Know-how 16.-17. Februar 2011, München Methodenwahl Partner: Veranstalter: Building & Connecting Know-how 16.-17. Februar 2011, München Tipps & Tricks Partner: Veranstalter: Database Generation Code First - Eigene Konventionen Von Code First zu DB First EF Tracing Provider EF Caching Provider • 2nd Level Cache • Problem beim Provider-Toolkit – Nicht kompatibel mit DbContext LinqPad EF 4.0 Recipes Ressourcen • • • • http://ef-faq.org/ http://blogs.msdn.com/b/efdesign/ http://blogs.msdn.com/b/adonet/ http://www.databinding.net/blog/category/entityframework.html • http://code.msdn.microsoft.com/EFProviderWrappers • EFD Database Generation Power Pack http://visualstudiogallery.msdn.microsoft.com/df3541c3d833-4b65-b942-989e7ec74c87/ • http://code.msdn.microsoft.com/DesignerExtStartKit Building & Connecting Know-how 16.-17. Februar 2011, München FRAGEN? Partner: Veranstalter: Wir sehen uns wieder! Konferenz speziell zu C++ 05. – 06. Mai 2011, direkt am Chiemsee cpp.ADC2011.de Trainings und Events der ppedv Mehr als 100 verschiedene Trainings auf Microsoft-Technologien spezialisiert 11 Standorte in D & AT Maßgeschneiderte Trainings direkt bei Ihnen vor Ort! www.ppedv.de Building & Connecting Know-how 16.-17. Februar 2011, München Hat Ihnen mein Vortrag gefallen? Ich freue mich auf Ihr Feedback! Partner: Veranstalter: Building & Connecting Know-how 16.-17. Februar 2011, München Vielen Dank! René Leupold [email protected] Partner: Veranstalter: