SlideShare ist ein Scribd-Unternehmen logo
.NET
User
Group
Bern
René Leupold
Patrick Weibel
www.dnug-bern.ch
Follow dnugbe on twitter
DNUG Bern Sponsoren
Über René Leupold
• connect@databinding.net (live)
• http://www.databinding.net
• CV siehe Xing ;-)
Über Patrick Weibel
• network@eweibel.net
• 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
• eSQL
• ExecuteStoreCmd./Query
• Linq
• SQL Injection
• Besonderheiten Abfrage
(ToList)
NHibernate
• HQL
• Native SQL
• Linq
• Criteria Queries
• Named Queries
• NH 3 QueryOver
Lazy-/Eager-Loading
Lazy-/Eager-Loading
Entity Framework
• Default Lazy
• Explizit Include
• Nachladen
– LoadReference
– LoadProperty
• Eager
– Kontext Property Lazy =
false
NHibernate
• Default Lazy
• Mapping (fetch)
• Criteria (FetchMode)
• Linq (Expand)
• Nachladen
– NHibernateUtil.Initialize()
• Eager
– lazy = false
Debugging/Profiling
Debugging/Profiling
Entity Framework
• SQL Profiler
• EFProfiler
• EFTracingProvider
– Ermöglicht SQL-Korrektur
• Log4Net mit
ToSQLTraceString
NHibernate
• 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
• Optimistic
• Pessimistic
NHibernate
• Optimistic
• Pessimistic
Auditing
Auditing
Entity Framework
• SavingChanges()
• T4-Anpassungen bei STE
• Aber auch
– Möglichkeiten der DB
nutzen
NHibernate
• Interceptor
• Listener
Validierung
Validierung
Entity Framework
• DataAnnoations
• IErrorInfo
• IValidate
• Custom
• Regeln auf DB nicht
vergessen
NHibernate
• DataAnnoations
• IErrorInfo
• IValidate
• IValidateable
Caching
Caching (2nd-Level)
Entity Framework
• EFCachingProvider
NHibernate
• NHibernate.Caches.*
– Prevalance
– SysCache
– SysCahce2
– MemCache
Model First/Code First?
Entity Framework
• Model First
• Code First
• Model Code First ;-)
NHibernate
• Visual Designer
Fragen und Diskussion
Ausblick
• Dritter Vortrag, wenn Interesse besteht
– Wünsche im Xing-Forum anmerken
• dnug be Screencast tv

Weitere ähnliche Inhalte

Ähnlich wie O/R-Mapping mit NHibernate und Entity Framework 2/2

HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsUlrich Schmidt
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Stefan Adolf
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
Karin Patenge
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Peter Nowak
 
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
inovex GmbH
 
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
SHI Search | Analytics | Big Data
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Sebastian Helzle
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro sessionVirttoo org
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
Jan Gehring
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
inovex GmbH
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
David Schneider
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
Hussein Morsy
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
Bokowsky + Laymann GmbH
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
Torsten Kleiber
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Thorben Janssen
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
get on top gmbh
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
Martin Abraham
 
Oracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpiOracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpi
Gunther Pippèrr
 
201903 seo campixx ur ls komprimieren - slideshare
201903 seo campixx   ur ls komprimieren - slideshare201903 seo campixx   ur ls komprimieren - slideshare
201903 seo campixx ur ls komprimieren - slideshare
Visionary Online Marketing
 
2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY
Daniel Fisher
 

Ähnlich wie O/R-Mapping mit NHibernate und Entity Framework 2/2 (20)

HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebAppsHTML5 Offline - Fallstricke für mobile Webseiten und WebApps
HTML5 Offline - Fallstricke für mobile Webseiten und WebApps
 
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIsNever Code Alone: Von Symfony Forms zu einer SPA auf APIs
Never Code Alone: Von Symfony Forms zu einer SPA auf APIs
 
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge20160310_ModernApplicationDevelopment_NoSQL_KPatenge
20160310_ModernApplicationDevelopment_NoSQL_KPatenge
 
Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)Das Microsoft AppStudio (beta)
Das Microsoft AppStudio (beta)
 
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
Wer gewinnt das SQL-Rennen auf der Hadoop-Strecke?
 
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
Apache Solr vs. Elasticsearch - And The Winner Is...! Ein Vergleich der Shoot...
 
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.jsTesten von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
Testen von TYPO3 CMS/Flow/Neos Anwendungen mit Behat und Dalek.js
 
Ruby on Rails in a metro session
Ruby on Rails in a metro sessionRuby on Rails in a metro session
Ruby on Rails in a metro session
 
Von Test nach Live mit Rex
Von Test nach Live mit RexVon Test nach Live mit Rex
Von Test nach Live mit Rex
 
Von Test nach live mit Rex
Von Test nach live mit RexVon Test nach live mit Rex
Von Test nach live mit Rex
 
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam istShareConf 2014: 10 Gründe warum der SharePoint langsam ist
ShareConf 2014: 10 Gründe warum der SharePoint langsam ist
 
Agile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit RailsAgile Softwareentwicklung mit Rails
Agile Softwareentwicklung mit Rails
 
ColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep DiveColdFusion im Enterprise Umfeld - Deep Dive
ColdFusion im Enterprise Umfeld - Deep Dive
 
Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020Agile Oracle database modeling and development - APEX Connect 2020
Agile Oracle database modeling and development - APEX Connect 2020
 
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und HibernateEffiziente datenpersistierung mit JPA 2.1 und Hibernate
Effiziente datenpersistierung mit JPA 2.1 und Hibernate
 
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
Wie projektiere ich eine expired Domain mit Wordpress - SEO Campixx 2012
 
Ist GraphQL das bessere REST
Ist GraphQL das bessere RESTIst GraphQL das bessere REST
Ist GraphQL das bessere REST
 
Oracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpiOracle hadoop doag-big-data_09_2014_gpi
Oracle hadoop doag-big-data_09_2014_gpi
 
201903 seo campixx ur ls komprimieren - slideshare
201903 seo campixx   ur ls komprimieren - slideshare201903 seo campixx   ur ls komprimieren - slideshare
201903 seo campixx ur ls komprimieren - slideshare
 
2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY2008 - Basta!: DAL DIY
2008 - Basta!: DAL DIY
 

Mehr von NETUserGroupBern

Large Language Models, Data & APIs - Integrating Generative AI Power into you...
Large Language Models, Data & APIs - Integrating Generative AI Power into you...Large Language Models, Data & APIs - Integrating Generative AI Power into you...
Large Language Models, Data & APIs - Integrating Generative AI Power into you...
NETUserGroupBern
 
AAD und .NET
AAD und .NETAAD und .NET
AAD und .NET
NETUserGroupBern
 
SHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPSSHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPS
NETUserGroupBern
 
Securing .NET Core, ASP.NET Core applications
Securing .NET Core, ASP.NET Core applicationsSecuring .NET Core, ASP.NET Core applications
Securing .NET Core, ASP.NET Core applications
NETUserGroupBern
 
Application Security in ASP.NET Core
Application Security in ASP.NET CoreApplication Security in ASP.NET Core
Application Security in ASP.NET Core
NETUserGroupBern
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
NETUserGroupBern
 
Einführung in RavenDB
Einführung in RavenDBEinführung in RavenDB
Einführung in RavenDB
NETUserGroupBern
 
What Doctors Can Teach Us on Continuous Learning
What Doctors Can Teach Us on Continuous LearningWhat Doctors Can Teach Us on Continuous Learning
What Doctors Can Teach Us on Continuous Learning
NETUserGroupBern
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
NETUserGroupBern
 
Weiches Zeugs für harte Jungs und Mädels
Weiches Zeugs für harte Jungs und MädelsWeiches Zeugs für harte Jungs und Mädels
Weiches Zeugs für harte Jungs und Mädels
NETUserGroupBern
 
Änderungen im Cardinality Estimator SQL Server 2014
Änderungen im Cardinality Estimator SQL Server 2014Änderungen im Cardinality Estimator SQL Server 2014
Änderungen im Cardinality Estimator SQL Server 2014
NETUserGroupBern
 
Rest Fundamentals
Rest FundamentalsRest Fundamentals
Rest Fundamentals
NETUserGroupBern
 
Refactoring: Mythen & Fakten
Refactoring: Mythen & FaktenRefactoring: Mythen & Fakten
Refactoring: Mythen & Fakten
NETUserGroupBern
 
AngularJs
AngularJsAngularJs
AngularJs
NETUserGroupBern
 
Pragmatische Anforderungen
Pragmatische AnforderungenPragmatische Anforderungen
Pragmatische Anforderungen
NETUserGroupBern
 
Einführung in MongoDB
Einführung in MongoDBEinführung in MongoDB
Einführung in MongoDB
NETUserGroupBern
 
What the hell is PowerShell?
What the hell is PowerShell?What the hell is PowerShell?
What the hell is PowerShell?
NETUserGroupBern
 
Know your warm up
Know your warm upKnow your warm up
Know your warm up
NETUserGroupBern
 
BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)
NETUserGroupBern
 
Versionskontrolle mit Git
Versionskontrolle mit GitVersionskontrolle mit Git
Versionskontrolle mit Git
NETUserGroupBern
 

Mehr von NETUserGroupBern (20)

Large Language Models, Data & APIs - Integrating Generative AI Power into you...
Large Language Models, Data & APIs - Integrating Generative AI Power into you...Large Language Models, Data & APIs - Integrating Generative AI Power into you...
Large Language Models, Data & APIs - Integrating Generative AI Power into you...
 
AAD und .NET
AAD und .NETAAD und .NET
AAD und .NET
 
SHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPSSHIFT LEFT WITH DEVSECOPS
SHIFT LEFT WITH DEVSECOPS
 
Securing .NET Core, ASP.NET Core applications
Securing .NET Core, ASP.NET Core applicationsSecuring .NET Core, ASP.NET Core applications
Securing .NET Core, ASP.NET Core applications
 
Application Security in ASP.NET Core
Application Security in ASP.NET CoreApplication Security in ASP.NET Core
Application Security in ASP.NET Core
 
Ruby und Rails für .NET Entwickler
Ruby und Rails für .NET EntwicklerRuby und Rails für .NET Entwickler
Ruby und Rails für .NET Entwickler
 
Einführung in RavenDB
Einführung in RavenDBEinführung in RavenDB
Einführung in RavenDB
 
What Doctors Can Teach Us on Continuous Learning
What Doctors Can Teach Us on Continuous LearningWhat Doctors Can Teach Us on Continuous Learning
What Doctors Can Teach Us on Continuous Learning
 
Entity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf CoreEntity Framework Core - Der Umstieg auf Core
Entity Framework Core - Der Umstieg auf Core
 
Weiches Zeugs für harte Jungs und Mädels
Weiches Zeugs für harte Jungs und MädelsWeiches Zeugs für harte Jungs und Mädels
Weiches Zeugs für harte Jungs und Mädels
 
Änderungen im Cardinality Estimator SQL Server 2014
Änderungen im Cardinality Estimator SQL Server 2014Änderungen im Cardinality Estimator SQL Server 2014
Änderungen im Cardinality Estimator SQL Server 2014
 
Rest Fundamentals
Rest FundamentalsRest Fundamentals
Rest Fundamentals
 
Refactoring: Mythen & Fakten
Refactoring: Mythen & FaktenRefactoring: Mythen & Fakten
Refactoring: Mythen & Fakten
 
AngularJs
AngularJsAngularJs
AngularJs
 
Pragmatische Anforderungen
Pragmatische AnforderungenPragmatische Anforderungen
Pragmatische Anforderungen
 
Einführung in MongoDB
Einführung in MongoDBEinführung in MongoDB
Einführung in MongoDB
 
What the hell is PowerShell?
What the hell is PowerShell?What the hell is PowerShell?
What the hell is PowerShell?
 
Know your warm up
Know your warm upKnow your warm up
Know your warm up
 
BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)BDD mit Machine.Specifications (MSpec)
BDD mit Machine.Specifications (MSpec)
 
Versionskontrolle mit Git
Versionskontrolle mit GitVersionskontrolle mit Git
Versionskontrolle mit Git
 

O/R-Mapping mit NHibernate und Entity Framework 2/2