.NET User Group Bern René Leupold Patrick Weibel www.dnug-bern.ch Follow dnugbe on twitter DNUG Bern Sponsoren Über René Leupold • [email protected] (live) • http://www.databinding.net • CV siehe Xing ;-) Über Patrick Weibel • • • • [email protected] http://blog.eweibel.net twitter.com/pweibel CV siehe Xing Vorbereitung reicht für mehr • Einmal mehr den Rotstift angesetzt Agenda • • • • • • • • Abfragen Lazy und Eager Loading Debugging/Profiling Optimierung Concurrency Auditing Validierung Caching Abfragen -Alle Produkte - Hardcover Gewicht > 100 -Orders mit Ebook -Order KPI Abfragen Entity Framework NHibernate • eSQL • ExecuteStoreCmd./Query • Linq • • • • • • • SQL Injection • Besonderheiten Abfrage (ToList) HQL Native SQL Linq Criteria Queries Named Queries NH 3 QueryOver Lazy-/Eager-Loading Lazy-/Eager-Loading Entity Framework NHibernate • Default Lazy • Explizit Include • Nachladen • • • • • – LoadReference – LoadProperty • Eager – Kontext Property Lazy = false Default Lazy Mapping (fetch) Criteria (FetchMode) Linq (Expand) Nachladen – NHibernateUtil.Initialize() • Eager – lazy = false Debugging/Profiling Debugging/Profiling Entity Framework NHibernate • SQL Profiler • EFProfiler • EFTracingProvider • • • • – Ermöglicht SQL-Korrektur • Log4Net mit ToSQLTraceString SQL Profiler NHProfiler Log4Net show_sql=true Optimierung am Beispiel -2 Varianten -Design optimieren -Komponenten wechseln Für jedes Projekt eine andere Komponente? Optimierungsgründe • • • • • • SELECT N + 1 Grosse Datenmengen Zu viele JOINS Batch-Processing Blob Falsche Strategie Optimierung Entity Framework • • • • • • ViewGeneration CompiledQuery DefiningQuery 2nd Level Cache Paging Query-Optimierung NHibernate • Fetching-Optimierung • Query Cache • First-Level Cache opt. – Evict() • 2nd Level Cache • Paging • Query-Optimierung Concurrency Concurrency Entity Framework NHibernate • Optimistic • Pessimistic • Optimistic • Pessimistic Auditing Auditing Entity Framework NHibernate • SavingChanges() • T4-Anpassungen bei STE • Aber auch • Interceptor • Listener – Möglichkeiten der DB nutzen Validierung Validierung Entity Framework • • • • DataAnnoations IErrorInfo IValidate Custom • Regeln auf DB nicht vergessen NHibernate • • • • DataAnnoations IErrorInfo IValidate IValidateable Caching Caching (2nd-Level) Entity Framework NHibernate • EFCachingProvider • NHibernate.Caches.* – – – – Prevalance SysCache SysCahce2 MemCache Model First/Code First? Entity Framework NHibernate • Model First • Code First • Model Code First ;-) • Visual Designer Fragen und Diskussion Ausblick • Dritter Vortrag, wenn Interesse besteht – Wünsche im Xing-Forum anmerken • dnug be Screencast tv