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