.NET Datenzugriff einfach
und performant mit Micro
O/R Mappern
André Krämer
Softwareentwickler, Trainer, Berater
Wer nutzt einen O/R Mapper?
Wer glaubt, dass sein O/R
Mapper zu langsam ist?
Wer nutzt …
• Entity Framework
• NHibernate
• Telerik Data Access
• LLBLGEN Pro
• DataSets
• DataReader
• Dapper
• NPOCO
• PetaPoco
• ORMLite
Was machen wir eigentlich den
ganzen Tag?
Customer
Order OrderItem
Product
orders*
0…*
1
Name Street City Date
Customer Orders Id
OrderItem
City Price Shipped
Relation-
ship
Relation-
ship
30 % der Arbeitszeit sind verloren
• ?
?
Datenzugriffsalternativen
Für das .NET Framework
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();
}
„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/
(Typed) Datasets (.NET 1.1 Style)
Bewertung von Typed Datasets
• Schlechte Performance
• Hoher Speicherverbrauch
• Nur bedingt Interoperabel
• …
Linq2Sql
Bewertung Linq2Sql
•  Funktioniert nur mit SQL Server
•  Wird nicht mehr weiter entwickelt
•  Wird von MS nicht empfohlen
ORMs (Entity Framework)
NHibernate
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… (?)
Seit ich O/R Mapper nutze
muss ich mehr über die DB
wissen, als je zuvor
Überraschungsfeatures von O/R Mappern
• Lazy Loading
• Deffered Execution
• Abfragen über mehrere Ebenen werden schnell komplex
• …
Weitere Alternative
Micro O/R Mapper
Was sind Micro OR Mapper
• Einfache Hilfsbibliotheken
• Weniger ist mehr
• In der Regel sehr SQL-lastig
• Auf Performance ausgerichtet
Bekannte Micro OR Mapper
• Dapper von Sam Saffron
• Massive von Rob Connery
• Peta Poco von Top Ten Software
Dapper
• Sam Saffron / Stack Overflow
• Open Source
• Eine Assembly
• Ultraschnell
• Optimiert auf lesende Zugriffe
• Pures SQL
Demo
Dapper
28
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
Demo
PetaPoco
30
Was Micro O/R Mapper Ihnen nicht bieten
• Hohe Abstraktion
• Lazy Loading
• Change Tracking
• Datenbankunabhängigkeit
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 
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
Homepage
andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer
Vielen Dank!
Blog
Xing
Facebook
Twitter
Google+
34
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
35andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer
.NET Performance Clinic.
Kostenlose Performance Sprechstunde
3 Performance-Probleme die Sie in Ihrem Code haben könnten
Mittwoch, 17. Juni 2015
13:15 – 13:45
Kurzpräsentation/Demo,
gefolgt von einer Q&A Runde

.NET Datenzugriff einfach und performant mit Micro O/R Mappern

  • 1.
    .NET Datenzugriff einfach undperformant mit Micro O/R Mappern André Krämer Softwareentwickler, Trainer, Berater
  • 3.
    Wer nutzt einenO/R Mapper?
  • 4.
    Wer glaubt, dasssein O/R Mapper zu langsam ist?
  • 5.
    Wer nutzt … •Entity Framework • NHibernate • Telerik Data Access • LLBLGEN Pro • DataSets • DataReader • Dapper • NPOCO • PetaPoco • ORMLite
  • 6.
    Was machen wireigentlich den ganzen Tag?
  • 7.
  • 8.
    Name Street CityDate Customer Orders Id OrderItem City Price Shipped Relation- ship Relation- ship
  • 9.
    30 % derArbeitszeit sind verloren
  • 10.
  • 11.
  • 12.
    DataReader (.NET 1.0Style) 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(); }
  • 13.
    „if you’re writingADO.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/
  • 14.
  • 15.
    Bewertung von TypedDatasets • Schlechte Performance • Hoher Speicherverbrauch • Nur bedingt Interoperabel • …
  • 16.
  • 17.
    Bewertung Linq2Sql • Funktioniert nur mit SQL Server •  Wird nicht mehr weiter entwickelt •  Wird von MS nicht empfohlen
  • 18.
  • 19.
  • 21.
    OR-Mapper • Unterstützen verschiedeneEntwicklungsmodelle (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… (?)
  • 22.
    Seit ich O/RMapper nutze muss ich mehr über die DB wissen, als je zuvor
  • 23.
    Überraschungsfeatures von O/RMappern • Lazy Loading • Deffered Execution • Abfragen über mehrere Ebenen werden schnell komplex • …
  • 24.
  • 25.
    Was sind MicroOR Mapper • Einfache Hilfsbibliotheken • Weniger ist mehr • In der Regel sehr SQL-lastig • Auf Performance ausgerichtet
  • 26.
    Bekannte Micro ORMapper • Dapper von Sam Saffron • Massive von Rob Connery • Peta Poco von Top Ten Software
  • 27.
    Dapper • Sam Saffron/ Stack Overflow • Open Source • Eine Assembly • Ultraschnell • Optimiert auf lesende Zugriffe • Pures SQL
  • 28.
  • 29.
    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
  • 30.
  • 31.
    Was Micro O/RMapper Ihnen nicht bieten • Hohe Abstraktion • Lazy Loading • Change Tracking • Datenbankunabhängigkeit
  • 32.
    Wann machen MicroO/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 
  • 33.
    Fazit • Folgen Sienicht 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
  • 34.
    Homepage andre@andrekraemer.de | http://andrekraemer.de| http://andrekraemer.de/blog | http://github.com/AndreKraemer Vielen Dank! Blog Xing Facebook Twitter Google+ 34
  • 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 35andre@andrekraemer.de | http://andrekraemer.de | http://andrekraemer.de/blog | http://github.com/AndreKraemer
  • 36.
    .NET Performance Clinic. KostenlosePerformance Sprechstunde 3 Performance-Probleme die Sie in Ihrem Code haben könnten Mittwoch, 17. Juni 2015 13:15 – 13:45 Kurzpräsentation/Demo, gefolgt von einer Q&A Runde

Hinweis der Redaktion

  • #2 Demo Source Code: https://github.com/AndreKraemer/MicroORMSample
  • #3 Selbständiger Softwareentwickler, Trainer und Berater Partner im IT-Visions Expertennetzwerk Microsoft MVP, TX Text Control MVP und Video Trainer bei video2brain
  • #37 Redgate .NET Performance Clinic. Kostenlose Sprechstunde