![Page 1: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/1.jpg)
.NET Datenzugriff einfach und performant mit Micro O/R Mappern
André Krämer
Softwareentwickler, Trainer, Berater
![Page 2: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/2.jpg)
![Page 3: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/3.jpg)
Wer nutzt einen O/R Mapper?
![Page 4: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/4.jpg)
Wer glaubt, dass sein O/R Mapper zu langsam ist?
![Page 5: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/5.jpg)
Wer nutzt …
• Entity Framework• NHibernate• Telerik Data Access• LLBLGEN Pro• DataSets• DataReader• Dapper• NPOCO• PetaPoco• ORMLite
![Page 6: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/6.jpg)
Was machen wir eigentlich den ganzen Tag?
![Page 7: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/7.jpg)
Customer
Order OrderItem
Product
orders*
0…*
1
![Page 8: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/8.jpg)
Name Street City Date
Customer Orders Id
OrderItem
City PriceShippe
d
Relation-ship
Relation-ship
![Page 9: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/9.jpg)
30 % der Arbeitszeit sind verloren
![Page 10: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/10.jpg)
• ?
?
![Page 11: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/11.jpg)
DatenzugriffsalternativenFür das .NET Framework
![Page 12: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/12.jpg)
DataReader (.NET 1.0 Style)
using (connection) { SqlCommand command = new SqlCommand( "SELECT CategoryID, CategoryName FROM Categories;", connection);
connection.Open(); SqlDataReader reader = command.ExecuteReader();
if (reader.HasRows) { while (reader.Read()) { Console.WriteLine("{0}\t{1}", reader.GetInt32(0), reader.GetString(1)); } } else { Console.WriteLine("No rows found."); } reader.Close(); }
![Page 13: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/13.jpg)
„if you’re writing ADO.Net code by hand, you’re
stealing from your employer or client.”
Jeremy D. Miller, 7. November 2008, http://codebetter.com/jeremymiller/2008/11/07/how-to-design-your-data-connectivity-strategy/
![Page 14: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/14.jpg)
(Typed) Datasets (.NET 1.1 Style)
![Page 15: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/15.jpg)
Bewertung von Typed Datasets
• Schlechte Performance• Hoher Speicherverbrauch• Nur bedingt Interoperabel• …
![Page 16: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/16.jpg)
Linq2Sql
![Page 17: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/17.jpg)
Bewertung Linq2Sql
• Funktioniert nur mit SQL Server• Wird nicht mehr weiter entwickelt• Wird von MS nicht empfohlen
![Page 18: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/18.jpg)
ORMs (Entity Framework)
![Page 19: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/19.jpg)
NHibernate
![Page 20: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/20.jpg)
![Page 21: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/21.jpg)
OR-Mapper
• Unterstützen verschiedene Entwicklungsmodelle (DB First, Code First, …)• „Schützen(?)“ uns davor SQL schreiben zu müssen• Abstrahieren die Datenbank für uns
• Entwickler müssen nichts mehr über die DB wissen
• Können Daten bei Bedarf (Lazy) laden• Machen das Leben leichter… (?)
![Page 22: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/22.jpg)
Seit ich O/R Mapper nutze muss ich mehr über die DB wissen, als je zuvor
![Page 23: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/23.jpg)
Überraschungsfeatures von O/R Mappern
• Lazy Loading• Deffered Execution• Abfragen über mehrere Ebenen werden schnell
komplex• …
![Page 24: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/24.jpg)
Weitere AlternativeMicro O/R Mapper
![Page 25: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/25.jpg)
Was sind Micro OR Mapper
• Einfache Hilfsbibliotheken• Weniger ist mehr• In der Regel sehr SQL-lastig• Auf Performance ausgerichtet
![Page 26: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/26.jpg)
Bekannte Micro OR Mapper
• Dapper von Sam Saffron• Massive von Rob Connery• Peta Poco von Top Ten Software
![Page 27: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/27.jpg)
Dapper
• Sam Saffron / Stack Overflow• Open Source• Eine Assembly• Ultraschnell• Optimiert auf lesende Zugriffe• Pures SQL
![Page 28: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/28.jpg)
DemoDapper
28
![Page 29: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/29.jpg)
PetaPoco
• Topten Software• Kann mit Pocos und Dynamics umgehen• Inspiriert von Massive und SubSonic• Code Generierung durch T4 Templates• Pures SQL oder Hilfsfunktionen über Attribute
![Page 30: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/30.jpg)
DemoPetaPoco
30
![Page 31: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/31.jpg)
Was Micro O/R Mapper Ihnen nicht bieten
• Hohe Abstraktion• Lazy Loading• Change Tracking• Datenbankunabhängigkeit
![Page 32: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/32.jpg)
Wann machen Micro O/R Mapper Sinn?
• Wenn Sie bzw. Ihr Team sehr nah an der Datenbank arbeitet• Wenn Sie möglichst viel Kontrolle haben möchten• Wenn Ihnen OR Mapper schon immer suspekt waren• Wenn Sie eine bestehende Lösung refactoren• Wenn Sie Angst vor Ihrem DBA haben
![Page 33: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/33.jpg)
Fazit
• Folgen Sie nicht blind jedem Trend und jedem Experten!• Überlegen Sie kritisch, wann welche
Datenzugriffstechnologie Sinn macht• One Size Fits All trifft nur selten auf die Software
Entwicklung zu• Micro O/R Mapper können zusätzlich zu echten O/R
Mappern genutzt werden• Profilen Sie ihre Anwendung, finden Sie
Performanceengpässe und setzen Sie gezielt Micro O/R Mapper ein
![Page 34: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/34.jpg)
34
Homepage
[email protected] | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer
Vielen Dank!
Blog
Google+
![Page 35: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/35.jpg)
35
Meine Dienstleistungen
• Schulungen• ASP.NET / AngularJS• Xamarin• TX Text Control• Infragistics NetAdvantage• Team Foundation Server• .NET Datenzugriff (Entity Framework, NHibernate, Micro O/R Mapper)
• Consulting• Durchführung von Technologieworkshops• Code- / Architekturreviews• Analyse von managed Memory Leaks• Prototypenentwicklung• Remote Entwickler-Support• Projektbegleitendes Coaching
• Softwareentwicklung• Mobile Apps (Windows 10, Windows 8, Windows Phone, Android, iOS)• Entwicklung von Web-Anwendungen mit ASP.NET und AngularJS
[email protected] | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer
![Page 36: NET Datenzugriff einfach und performant mit Micro O/R Mappern](https://reader030.vdocuments.pub/reader030/viewer/2022032505/55c7c994bb61eb00608b45a5/html5/thumbnails/36.jpg)
.NET Performance Clinic. Kostenlose Performance Sprechstunde
3 Performance-Probleme die Sie in Ihrem Code haben könnten
Mittwoch, 17. Juni 201513:15 – 13:45
Kurzpräsentation/Demo, gefolgt von einer Q&A Runde