05.11.2014 Aufrufe

René Leupold Patrick Weibel - NET User Group Bern

René Leupold Patrick Weibel - NET User Group Bern

René Leupold Patrick Weibel - NET User Group Bern

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

.<strong>NET</strong><strong>User</strong><br />

<strong>Group</strong><br />

<strong>Bern</strong><br />

<strong>René</strong> <strong>Leupold</strong><br />

<strong>Patrick</strong> <strong>Weibel</strong><br />

www.dnug-bern.ch<br />

Follow dnugbe on twitter


DNUG <strong>Bern</strong> Sponsoren


Über <strong>René</strong> <strong>Leupold</strong><br />

• connect@databinding.net (live)<br />

• http://www.databinding.net<br />

• CV siehe Xing ;-)


Über <strong>Patrick</strong> <strong>Weibel</strong><br />

• network@eweibel.net<br />

• http://blog.eweibel.net<br />

• twitter.com/pweibel<br />

• CV siehe Xing


Vorbereitung reicht für mehr<br />

• Einmal mehr den Rotstift angesetzt


Agenda<br />

• Abfragen<br />

• Lazy und Eager Loading<br />

• Debugging/Profiling<br />

• Optimierung<br />

• Concurrency<br />

• Auditing<br />

• Validierung<br />

• Caching


Abfragen<br />

-Alle Produkte<br />

- Hardcover Gewicht > 100<br />

-Orders mit Ebook<br />

-Order KPI


Abfragen<br />

Entity Framework<br />

• eSQL<br />

• ExecuteStoreCmd./Query<br />

• Linq<br />

• SQL Injection<br />

• Besonderheiten Abfrage<br />

(ToList)<br />

NHibernate<br />

• HQL<br />

• Native SQL<br />

• Linq<br />

• Criteria Queries<br />

• Named Queries<br />

• NH 3 QueryOver


Lazy-/Eager-Loading


Lazy-/Eager-Loading<br />

Entity Framework<br />

• Default Lazy<br />

• Explizit Include<br />

• Nachladen<br />

– LoadReference<br />

– LoadProperty<br />

• Eager<br />

– Kontext Property Lazy =<br />

false<br />

NHibernate<br />

• Default Lazy<br />

• Mapping (fetch)<br />

• Criteria (FetchMode)<br />

• Linq (Expand)<br />

• Nachladen<br />

– NHibernateUtil.Initialize()<br />

• Eager<br />

– lazy = false


Debugging/Profiling


Debugging/Profiling<br />

Entity Framework<br />

• SQL Profiler<br />

• EFProfiler<br />

• EFTracingProvider<br />

– Ermöglicht SQL-Korrektur<br />

• Log4Net mit<br />

ToSQLTraceString<br />

NHibernate<br />

• SQL Profiler<br />

• NHProfiler<br />

• Log4Net<br />

• show_sql=true


Optimierung am Beispiel<br />

-2 Varianten<br />

-Design optimieren<br />

-Komponenten wechseln<br />

Für jedes Projekt<br />

eine andere Komponente?


Optimierungsgründe<br />

• SELECT N + 1<br />

• Grosse Datenmengen<br />

• Zu viele JOINS<br />

• Batch-Processing<br />

• Blob<br />

• Falsche Strategie


Optimierung<br />

Entity Framework<br />

• ViewGeneration<br />

• CompiledQuery<br />

• DefiningQuery<br />

• 2nd Level Cache<br />

• Paging<br />

• Query-Optimierung<br />

NHibernate<br />

• Fetching-Optimierung<br />

• Query Cache<br />

• First-Level Cache opt.<br />

– Evict()<br />

• 2nd Level Cache<br />

• Paging<br />

• Query-Optimierung


Concurrency


Concurrency<br />

Entity Framework<br />

• Optimistic<br />

• Pessimistic<br />

NHibernate<br />

• Optimistic<br />

• Pessimistic


Auditing


Auditing<br />

Entity Framework<br />

• SavingChanges()<br />

• T4-Anpassungen bei STE<br />

• Aber auch<br />

– Möglichkeiten der DB<br />

nutzen<br />

NHibernate<br />

• Interceptor<br />

• Listener


Validierung


Validierung<br />

Entity Framework<br />

• DataAnnoations<br />

• IErrorInfo<br />

• IValidate<br />

• Custom<br />

NHibernate<br />

• DataAnnoations<br />

• IErrorInfo<br />

• IValidate<br />

• IValidateable<br />

• Regeln auf DB nicht<br />

vergessen


Caching


Caching (2nd-Level)<br />

Entity Framework<br />

• EFCachingProvider<br />

NHibernate<br />

• NHibernate.Caches.*<br />

– Prevalance<br />

– SysCache<br />

– SysCahce2<br />

– MemCache


Model First/Code First?<br />

Entity Framework<br />

• Model First<br />

• Code First<br />

• Model Code First ;-)<br />

NHibernate<br />

• Visual Designer


Fragen und Diskussion


Ausblick<br />

• Dritter Vortrag, wenn Interesse besteht<br />

– Wünsche im Xing-Forum anmerken<br />

• dnug be Screencast tv

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!