SlideShare a Scribd company logo
© High Wheel Software All rights reserved
Wydajne zapytania w Entity Framework
Przemysław Dzierżak
2WWW.HIGHWEELSOFTWARE.COM
Kto mówi?
• Przemysław Dzierżak
• Programista .NET od 2005 roku
• Architekt hurtowni danych (Microsoft SQL Server)
• Współwłaściciel
• Miłośnik:
• Automatyzacji
• Czytelnego kodu
• LEAN Software Development / Agile
WWW.HIGHWEELSOFTWARE.COM
Agenda
• DBContext a IoC/DI
• DateTime.Date wg EF ☺
• Jak efektywnie pracować z ORM
• Odczyt
• Tylko odczyt, duży wolumen
• Zapis
3
DBContext a IoC/DI
WWW.HIGHWEELSOFTWARE.COM 4
WWW.HIGHWEELSOFTWARE.COM
DBContext
• Wzorzec „Repository”:
• dostęp do danych – DbSet<Entity>, Linq-to-entities
• Wzorzec „Unit of Work”
• Śledzenie zmian, wspólny commit
• Cache 1-go poziomu
• „Repeatable read”
DEMO
5
WWW.HIGHWEELSOFTWARE.COM
DBContext a Dependency Injection ?
[Dependency]
public MyDbContext { get; set; }
Ile powinien żyć DbContext?
6
WWW.HIGHWEELSOFTWARE.COM
Ile powinien żyć DbContext?
Pełna odpowiedź – Unit of Work – transakcja biznesowa
• Parametr każdej metody dostępu do danych
• AddUser (context, userData), DisableUser(context, userId) , …
• … lub magia
• -> http://mehdi.me/ambient-dbcontext-in-ef6/
Prosta odpowiedź:
• Web – 1 request
• Desktop – 1 okno (form)
• https://msdn.microsoft.com/en-us/library/jj729737(v=vs.113).aspx
Koniecznie Dispose()
7
DATE, DATETIME, DATETIME2
WWW.HIGHWEELSOFTWARE.COM 8
WWW.HIGHWEELSOFTWARE.COM
Typy danych daty / czasu
• DATE, DATETIME, DATETIME2
• Zakresy – Microsoft SQL Server
• DATE – 0001-01-01 … 9999-12-31 3 bajty
• DATETIME – 1753-01-01 … 9999-12-31 8 bajtów
• DATETIME2 – 0001-01-01 … 9999-12-31 6-8 bajtów
• Dokładność – Microsoft SQL Server
• DATE – 1 dzień
• DATETIME – 3-4 ms !
• DATETIME2(0) – 1 s
• DATETIME2(3) – 1 ms
• DATETIME2(7) – 0.0001 ms
DEMO
9
WWW.HIGHWEELSOFTWARE.COM
DbFunctions.TruncateTime - tłumaczenie
convert (datetime2, convert(varchar(255), [Extent1].[OrderDate], 102) , 102)
Czyli:
DateTime.Parse( orderDate.ToString("yyyy.MM.dd") )
10
Wydajne zapytania z użyciem
Entity Framework
WWW.HIGHWEELSOFTWARE.COM 11
WWW.HIGHWEELSOFTWARE.COM
Praca z bazą danych – ogólne zasady
• Niewielka liczba zapytań, najlepiej O(1)
• W bazie danych:
• Filtrowanie
• Ograniczenie liczby kolumn
• Grupowanie
• Sortowanie
• Stronicowanie
DEMO
12
WWW.HIGHWEELSOFTWARE.COM
Efektywne zapytania - narzędzia
• SQL Profiler i narzędzia VS
• Opóźnione wykonanie ( IQueryable<T> vs ToList, AsEnumerable)
• Include()
• Szczegół -> ogół / SelectMany
• Unikanie CAST
Tylko odczyt?
• Ograniczanie kolumn
• AsNoTracking()
• Brak cache’a
13
WWW.HIGHWEELSOFTWARE.COM
Entity Framework – zapis dużych wolumenów danych
DEMO
• Wyłączenie śledzenia zmian
context.Configuration.AutoDetectChangesEnabled = false;
• Dzielenie na paczki po 1-10k wierszy
• W ostateczności Bulk Insert
Dużo zmian? („UPSERT”)
• Wczytaj zbiór, modyfikuj/dodawaj
• Lub tabela ‚tymczasowa’ + MERGE
14
WWW.HIGHWEELSOFTWARE.COM
Na zakończenie
• Nie dajmy się zwariować
• mało danych – prostsze wygrywa
• EF (i inne ORM) mają być wygodne, nie szybkie
• Znajomość wykorzystywanej technologii
15
Pytania?
Al. Zwycięstwa 96/98, 81-451 Gdynia
www.highwheelsoftware.com
przemyslaw.dzierzak@highwheelsoftware.com

More Related Content

What's hot

Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
kraqa
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OSLukasz Kaluzny
 
SQLServer dla Programistów
SQLServer dla ProgramistówSQLServer dla Programistów
SQLServer dla Programistów
HighWheelSoftware
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajnościmagda3695
 
PyLadies #3
PyLadies #3PyLadies #3
PyLadies #3
Kamil Rykowski
 
MongoDB 2011
MongoDB 2011MongoDB 2011
MongoDB 2011
Natalia Stanko
 
Azure Site Recovery
Azure Site RecoveryAzure Site Recovery
Azure Site Recovery
Lukasz Kaluzny
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
Bart Zaremba
 
Exchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newExchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newKonrad Sagala
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Antoni Orfin
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
Bartosz Romanowski
 

What's hot (11)

Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej NikielTestowanie EDW czyli projekt piekło - Bartłomiej Nikiel
Testowanie EDW czyli projekt piekło - Bartłomiej Nikiel
 
Wprowadzenie do Cloud OS
Wprowadzenie do Cloud OSWprowadzenie do Cloud OS
Wprowadzenie do Cloud OS
 
SQLServer dla Programistów
SQLServer dla ProgramistówSQLServer dla Programistów
SQLServer dla Programistów
 
Info meet pomiary wydajności
Info meet pomiary wydajnościInfo meet pomiary wydajności
Info meet pomiary wydajności
 
PyLadies #3
PyLadies #3PyLadies #3
PyLadies #3
 
MongoDB 2011
MongoDB 2011MongoDB 2011
MongoDB 2011
 
Azure Site Recovery
Azure Site RecoveryAzure Site Recovery
Azure Site Recovery
 
Websites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUGWebsites vs Cloud Services - OLMUG
Websites vs Cloud Services - OLMUG
 
Exchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's newExchange 2013 sp1 - what's new
Exchange 2013 sp1 - what's new
 
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacjiProjektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
Projektowanie wysokowydajnych i skalowalnych serwisów WWW - Warstwa aplikacji
 
W3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressaW3 Total Cache - skuteczne przyśpieszanie WordPressa
W3 Total Cache - skuteczne przyśpieszanie WordPressa
 

Similar to Jak nie narobić sobie problemów korzystając z EntityFramework

IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
3camp
 
Mikrousługi w allegro
Mikrousługi w allegroMikrousługi w allegro
Mikrousługi w allegro
Laravel Poland MeetUp
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Mateusz Paprocki, PMP
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SeeQuality.net
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
Bartosz Ratajczyk
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PROIDEA
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
SQLExpert.pl
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
Kamil Nowinski
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
HighWheelSoftware
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
Tobias Koprowski
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
kraqa
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
Bartosz Ratajczyk
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Kamil Nowinski
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
Bartosz Ratajczyk
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
Artur Wronski
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
Wydawnictwo Helion
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
Wydawnictwo Helion
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
Łukasz Grala
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidk
Łukasz Grala
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Tomasz Lelek
 

Similar to Jak nie narobić sobie problemów korzystając z EntityFramework (20)

IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl IT od kuchni w Nokaut.pl
IT od kuchni w Nokaut.pl
 
Mikrousługi w allegro
Mikrousługi w allegroMikrousługi w allegro
Mikrousługi w allegro
 
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
Jak oszczędzać czas zespołu w środowisku mikroserwisów, czyli efektywny flow ...
 
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdfSQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
SQLDAY2022-AdrianChodkowski-10BledowPowerBI.pdf
 
Podstawy ETL z SSIS
Podstawy ETL z SSISPodstawy ETL z SSIS
Podstawy ETL z SSIS
 
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
PLNOG16: Nowe założenia dla zbieranie logów, statystyk i alertów, Maciej Kałk...
 
SQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracjiSQL Server 2008 Tips & tricks administracji
SQL Server 2008 Tips & tricks administracji
 
Wprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivotWprowadzenie do modelowania danych w PowerPivot
Wprowadzenie do modelowania danych w PowerPivot
 
Microsoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 rokuMicrosoft Business Intelligence w 2017 roku
Microsoft Business Intelligence w 2017 roku
 
Maintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_ZnienackaMaintenance_Plans_Zupełnie_Znienacka
Maintenance_Plans_Zupełnie_Znienacka
 
Michał Dec - Quality in Clouds
Michał Dec - Quality in CloudsMichał Dec - Quality in Clouds
Michał Dec - Quality in Clouds
 
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
"Administrator z przypadku" - Jak działa SQL Server i jak o niego dbać
 
Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016Nowości w zakresie bezpieczeństwa w SQL Server 2016
Nowości w zakresie bezpieczeństwa w SQL Server 2016
 
Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?Jak szybko przetwarzasz hurtowe ilości XML?
Jak szybko przetwarzasz hurtowe ilości XML?
 
[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System[#4] spark - IBM Integrated Analytics System
[#4] spark - IBM Integrated Analytics System
 
Microsoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga ekspertaMicrosoft SQL Server 2000. Księga eksperta
Microsoft SQL Server 2000. Księga eksperta
 
Transact-SQL. Czarna księga
Transact-SQL. Czarna księgaTransact-SQL. Czarna księga
Transact-SQL. Czarna księga
 
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning20160309   AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
20160309 AzureDay 2016 - Azure Stream Analytics & Azure Machine Learning
 
20160316 techstolica - cloudanalytics -tidk
20160316  techstolica - cloudanalytics -tidk20160316  techstolica - cloudanalytics -tidk
20160316 techstolica - cloudanalytics -tidk
 
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
Jak przerobić monolityczną aplikację na architekturę mikro serwisów ?
 

Jak nie narobić sobie problemów korzystając z EntityFramework