NH - Manfred Steyer

Werbung
Manfred Steyer | CAMPUS 02 | softwarearchitekt.at
NHibernate vs. Entity
Framework
Ziele
• NHibernate und Entity Framework sowie
deren Unterschiede kennen lernen
1
Agenda
• Kriterien
• Beispiel mit EF
• Beispiel mit NH
• Model First/ Code First
• Vererbung
• Abgehängte Objekte
• Custom SQL
• Performance
O/R-Mapping
2
Kriterien
EF
NH
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
Skala
• + Ok
• ++ Perfekt
• +++ Wow! (> 100%)
• - Nicht Ok
• -- Total Schlecht
• --- Negativ Überrascht
3
EF - ÜBERBLICK
Entity Data Model
Entnommen aus: [Lerman, Programming Entity Framework]
4
Entity Data Model
Entity Data Model
5
Generierte Artefakte
• Entitätsklassen mit Assoziationen
• ObjectContext
Unterstützte Datenbanken
• DB2
• Sybase
• Ingres
• Oracle
• PostgreSQL
• MS SQL
• MySQL
• Firebird
• Oracle
• SQL Light
6
DEMO
Kriterien
EF
NH
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
7
NH - ÜBERBLICK
XML-Mapping für Entities
8
Konfiguration
Entitäten
Page  18
9
Unterstützte DBMS
• MS SQL
• Oracle
• DB2
• PostgreSQL
• EffiProz
• SQLite
• FireBird
• Sybase
• Informix
• VistaDB
• MySQL
DEMO
EF
NH
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
10
Kriterien
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
EF
+
++
+
++
NH
+++
-+
++
++
++
++
++
++
+++
++
++
++
++
EF - MODEL/ CODE FIRST
11
Model First
Code First (EF CTP 4 !!)
12
Code First (EF CTP 4 !!)
Code First (EF CTP 4 !!)
13
NH - MODEL/ CODE FIRST
NHibernate Mapping Attributes
Page  28
14
Auto-Mapping mit Fluent NH
Fluent NH
15
Kriterien
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
EF
+
++
+
++
++
++
++
++
NH
+++
-+
++
++
++
++
+++
++
++
++
++
VERERBUNG
16
Page  33
Kriterien
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
EF
+
++
+
++
++
++
++
++
++
++
++
NH
+++
-+
++
++
++
++
+++
++
++
++
17
CUSTOM SQL/ SP
EF: Native/ Store Queries
18
NH: SQL Queries
Kriterien
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
EF
+
++
+
++
++
++
++
++
++
++
++
++
NH
+++
-+
++
++
++
++
+++
++
++
++
++
19
PERFORMANCE
Hinterhof-Benchmark
• Performance in etwa die selbe bei kleiner Anzahl
an Datensätzen
• NH ist beim Abrufen ein wenig schneller (ca. 1
ms pro Objekt)
• EF ist beim Einfügen ein wenig schneller
(ca. 1 ms pro Objekt)
• Update: Ungefähr gleich
(NH winzigen Vorsprung)
• Performance entspricht ~ manuellem Mapping
20
Zusammenfassung
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
EF
+
++
+
++
++
++
++
++
++
++
++
++
+
NH
+++
-+
++
++
++
++
+++
++
++
++
++
+
EF
+
++
+
++
++
++
++
++
++
++
++
++
+
NH
+++
-+
++
++
++
++
+++
++
++
++
++
+
Zusammenfassung
Unterstützte DBMS
Visual Studio-Integration
Persistence Ignorance
DB-First
Model First/ Code First
Abfragen
Concurrency
Beziehungen
Vererbung
Lazy-/ Eager-Loading
Abgehängte Objekte
Custom SQL/ SP
Performance
21
Literatur
• NHibernate Reference Documentation
http://nhforge.org/doc/nh/en/index.html
• Absolute Beginers Guide to Entity
Framework
http://blogs.msdn.com/b/adonet/archive/2010/07/19/ab
solue-beginners-guide-to-entity-framework.aspx
• .NET 4.0-Update (Deutsch)
ISBN 3866454430
• Programming Entity Framework
ISBN 0596807260
Kontakt und weitere Infos
• Manfred Steyer
• www.softwarearchitekt.at
• [email protected]
22
Herunterladen