SlideShare ist ein Scribd-Unternehmen logo
1 von 13
© 2015 Profinit. All rights reserved.
Entity Framework
v enterprise aplikacích
Tomáš Vichta 28. 11. 2015
© 2015 Profinit. All rights reserved.
2
Entity Framework
v enterprise aplikacích
o Design vzorové aplikace
o Automapper
o CRUD
o DbContext
© 2015 Profinit. All rights reserved.
3
Entity Framework
v enterprise aplikacích
o Cílový projekt
– Menší až střední datově orientovaná webová aplikace
– Převážně atomické CRUD operace (Create, Read, Update, Delete)
• Konfigurační nástroje, reporty, jednoduché datové vazby
– Zjednodušený CQRS pattern (Command Query Responsibility Segregation)
• a přizpůsobený pro použití s EF
– Společné sdílené komponenty
– Celkem silná vazba na EF
• může být nevýhoda
• šlo by vylepšit, ale za cenu vyšší složitosti
– Logiku pro specifické operace (jiné než klasický CRUD/CQRS) může být vhodnější
implementovat paralelně vedle, samostatně
• Je pak k diskuzi, zda komplikovat aplikaci 2 odlišnými přístupy pro práci s daty, nebo to celé
navrhnout jinak a jednotně.
© 2015 Profinit. All rights reserved.
Datové objekty a aplikační vrstvy
© 2015 Profinit. All rights reserved.
AutoMapper
o nuget balíček AutoMapper, http://automapper.org/
o Automatické mapování mezi datovým objekty (Entity, Dto objekty, View models, …)
o Podpora EF Linq, Expressions (AutoMapper.QueryableExtensions)
o Lze integrovat s Dependency Injection frameworky
o Podpora pokročilých funkcí (custom mapování)
o Podpora mapování collections
© 2015 Profinit. All rights reserved.
6
CRUD
Queries – zobrazení dat
© 2015 Profinit. All rights reserved.
7
CRUD
Modifikace dat
© 2015 Profinit. All rights reserved.
8
Datové objekty
o Datové objekty mají vždy primární klíč: Int32 Id
– Toto omezení může někdy vadit, pro CRUD je to tak ale obvykle OK
– Často to takto vyžadují GUI komponenty (např. Telerik Kendo grid)
o EF entity, BusinessDto a ViewModel objekty
– BusinessDto nebo i EF entitu lze poslat až na UI vrstvu
– zanášíme tím ale závislost na nižších vrstvách
– pro jednoduché scénáře lze akceptovat
– správně – samostatné ViewModel objekty pro Create, Update, i Delete
• designově OK, ale přidělává to práci
• často se používá jediný objekt (přímo EF entita) pro celý CRUD – spíš nedoporučuji, ale záleží
na typu a velikosti projektu
© 2015 Profinit. All rights reserved.
9
Design obecně
o Create/Update/Delete operace
– I Update by šel udělat genericky, ale takto je to bezpečnější
– Nenačítáme entitu před update/delete, protože to není třeba
• Při editaci 1 entity by to typicky nevadilo, problém při editaci mnoha entit najednou
o CrudFacade
– Šlo by to i bez Facade, možná by to bylo i designově čistější
o Dependency Injection
– Standard a základ
– Co nejméně kombinovat se singletony, statickými třídami a ručně vytvářenými objekty
• Problém obecně u Atributů, MVC - Razor helpery, atd.
o Zapouzdření
– pouze "hlavní" interfaces a datové objekty jsou public
– Třídy v Business vrstvě internal
– MVC Controllers a další MVC komponenty ve WebUI musí být public
• vlastnost MVC a .NET - např. runtime kompilace Views v samostatné app. doméně
© 2015 Profinit. All rights reserved.
10
DbContext
o Lifecycle
– Unit of work – ale jak velkou tu Unit of work uděláme?
– PerWebRequest – častý kompromis
– Alternativně lze doporučit menší scope: per-facade, per-operation
– Pokud váháte, dělejte spíš menší scope, než větší – EF má problémy, když projde
ChangeTrackerem stovky a více entit.
o Dependency Injection
– Objekt jako každý jiný – proč jej neřídit pomocí DI?
– Umožní injectovat závislosti, viz. příklad:
• IDateTimeFacade
• Pro automatické nastavování CreatedAt, ModifiedAt, DeletedAt
• Pro testy složitých integrací – možnost uměle posunout čas pomocí testovací implementace
• Opatrně potom na používání času na DB serveru – GETDATE(), ….
• IAuthenticationService – pro automatické nastavování CreatedBy, ModifiedBy, DeletedBy
o Definovat vlastní repository na DbContextem?
© 2015 Profinit. All rights reserved.
Diskuze
© 2015 Profinit. All rights reserved.
Díky za pozornost
• 1
© 2015 Profinit. All rights reserved.
Profinit, s.r.o., Tychonova 2, 160 00 Praha 6, +420 224 316 016, www.profinit.eu
Společnost PROFINIT je členem nadnárodní skupiny New Frontier Group, která je
leadrem v oblasti digitální transformace organizací a firem ve střední a východní
Evropě. S více než 2000 zaměstnanci v 17 zemích patří mezi deset největších
poskytovatelů ICT služeb v celém CEE regionu a řadí se ke špičce v oblasti vývoje
software na zakázku, data managementu, datových skladů a business intelligence.
PROFINIT má řadu významných zákazníků z finančního a telekomunikačního
sektoru, utilit a státní správy. Společnost se primárně zaměřuje na konzultační
služby v oblasti digitální transformace, technologické služby a outsourcing. Podle
údajů IDC (2012) patří PROFINIT mezi 5 největších firem v oblasti vývoje software
na zakázku v České Republice a je držitelem řady dalších ocenění.
Shaping future, delivering results!

Weitere ähnliche Inhalte

Was ist angesagt?

Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Jaroslav Prodelal
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEEMartin Ptáček
 
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & Replication
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & ReplicationWebinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & Replication
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & ReplicationJaroslav Prodelal
 
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...Jaroslav Prodelal
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Jaroslav Prodelal
 
Moderní inteligentní řízené WiFi sítě / Aruba Networks
Moderní inteligentní řízené WiFi sítě / Aruba NetworksModerní inteligentní řízené WiFi sítě / Aruba Networks
Moderní inteligentní řízené WiFi sítě / Aruba NetworksJaroslav Prodelal
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částProfinit
 
Webinář: Ovládněte umění správy dokumentů ve vaší organizaci
Webinář: Ovládněte umění správy dokumentů ve vaší organizaciWebinář: Ovládněte umění správy dokumentů ve vaší organizaci
Webinář: Ovládněte umění správy dokumentů ve vaší organizaciJaroslav Prodelal
 
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"Jaroslav Prodelal
 
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Jaroslav Prodelal
 

Was ist angesagt? (10)

Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
Webinář: Nekupujte počítače a zjednodušte si život využíváním virtuálních des...
 
2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE2009 X33EJA Moderní Technologie Pro Vývoj JEE
2009 X33EJA Moderní Technologie Pro Vývoj JEE
 
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & Replication
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & ReplicationWebinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & Replication
Webinář: Vylepšete ochranu virtuální infrastruktury - Veeam Backup & Replication
 
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
Webinář: Co nového přináší verze 9 jedničky v zálohování Veeam Backup & Repli...
 
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
Webinář: Ochrana dat ve virtuálním prostředí pomocí nástroje Veeam B&R / 3.10...
 
Moderní inteligentní řízené WiFi sítě / Aruba Networks
Moderní inteligentní řízené WiFi sítě / Aruba NetworksModerní inteligentní řízené WiFi sítě / Aruba Networks
Moderní inteligentní řízené WiFi sítě / Aruba Networks
 
Odborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. částOdborná snídaně 20.9. - Agile@DevOps - 2. část
Odborná snídaně 20.9. - Agile@DevOps - 2. část
 
Webinář: Ovládněte umění správy dokumentů ve vaší organizaci
Webinář: Ovládněte umění správy dokumentů ve vaší organizaciWebinář: Ovládněte umění správy dokumentů ve vaší organizaci
Webinář: Ovládněte umění správy dokumentů ve vaší organizaci
 
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"
Vyhodnocení semináře "Virtuální infrastruktura ve Vašich službách"
 
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
Od virtualizace serverů k virtualizaci desktopů. Nebo opačně?
 

Andere mochten auch

Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...
Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...
Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...SOCXO
 
CRH Embedded 11-2016
CRH Embedded 11-2016CRH Embedded 11-2016
CRH Embedded 11-2016Charles Hale
 
Five skills needed in 21st century and how social technology can unlock them
Five skills needed in 21st century and how social technology can unlock themFive skills needed in 21st century and how social technology can unlock them
Five skills needed in 21st century and how social technology can unlock themLaura-Jane Parker
 
Get Past the RFP! Persuasive Writing for Ad Agency New Business
Get Past the RFP! Persuasive Writing for Ad Agency New BusinessGet Past the RFP! Persuasive Writing for Ad Agency New Business
Get Past the RFP! Persuasive Writing for Ad Agency New BusinessFuel Lines Business Development
 
4 compelling reasons why brands should invest in advocacy marketing.
4 compelling reasons why brands should invest in advocacy marketing.4 compelling reasons why brands should invest in advocacy marketing.
4 compelling reasons why brands should invest in advocacy marketing.SOCXO
 
Webinar-1: Why Advocacy Marketing is important in today’s digital world?
Webinar-1: Why Advocacy Marketing is important in today’s digital world?Webinar-1: Why Advocacy Marketing is important in today’s digital world?
Webinar-1: Why Advocacy Marketing is important in today’s digital world?SOCXO
 
How Full Monty Storytelling Can Drive Your Agency New Business
How Full Monty Storytelling Can Drive Your Agency New BusinessHow Full Monty Storytelling Can Drive Your Agency New Business
How Full Monty Storytelling Can Drive Your Agency New BusinessFuel Lines Business Development
 
CHORAL
CHORALCHORAL
CHORALFARO
 
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony Corns
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony CornsImproving Access and Exploitation of 3D Cultural Heritage Data | Anthony Corns
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony CornsFARO
 
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...FARO
 
Presentatie workshop Augmented Reality & ErfgoedBeacons
Presentatie workshop Augmented Reality & ErfgoedBeaconsPresentatie workshop Augmented Reality & ErfgoedBeacons
Presentatie workshop Augmented Reality & ErfgoedBeaconsFARO
 
Green Manufacturing
Green ManufacturingGreen Manufacturing
Green Manufacturingananya0122
 
Steven Boyle Graphic Design
Steven Boyle Graphic DesignSteven Boyle Graphic Design
Steven Boyle Graphic DesignSteven Boyle
 

Andere mochten auch (16)

Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...
Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...
Webinar-2: Rise of an Employee Marketer: Empowering Your Employees to be Bran...
 
resume+2016+(2)
resume+2016+(2)resume+2016+(2)
resume+2016+(2)
 
CRH Embedded 11-2016
CRH Embedded 11-2016CRH Embedded 11-2016
CRH Embedded 11-2016
 
Five skills needed in 21st century and how social technology can unlock them
Five skills needed in 21st century and how social technology can unlock themFive skills needed in 21st century and how social technology can unlock them
Five skills needed in 21st century and how social technology can unlock them
 
Get Past the RFP! Persuasive Writing for Ad Agency New Business
Get Past the RFP! Persuasive Writing for Ad Agency New BusinessGet Past the RFP! Persuasive Writing for Ad Agency New Business
Get Past the RFP! Persuasive Writing for Ad Agency New Business
 
Resume_Sita_Ramadas_akkineni
Resume_Sita_Ramadas_akkineniResume_Sita_Ramadas_akkineni
Resume_Sita_Ramadas_akkineni
 
4 compelling reasons why brands should invest in advocacy marketing.
4 compelling reasons why brands should invest in advocacy marketing.4 compelling reasons why brands should invest in advocacy marketing.
4 compelling reasons why brands should invest in advocacy marketing.
 
Webinar-1: Why Advocacy Marketing is important in today’s digital world?
Webinar-1: Why Advocacy Marketing is important in today’s digital world?Webinar-1: Why Advocacy Marketing is important in today’s digital world?
Webinar-1: Why Advocacy Marketing is important in today’s digital world?
 
How Full Monty Storytelling Can Drive Your Agency New Business
How Full Monty Storytelling Can Drive Your Agency New BusinessHow Full Monty Storytelling Can Drive Your Agency New Business
How Full Monty Storytelling Can Drive Your Agency New Business
 
CHORAL
CHORALCHORAL
CHORAL
 
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony Corns
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony CornsImproving Access and Exploitation of 3D Cultural Heritage Data | Anthony Corns
Improving Access and Exploitation of 3D Cultural Heritage Data | Anthony Corns
 
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...
De Eerste Wereldoorlog in 2018 en daarna!? Workshop 6: lokale herdenkingen en...
 
Presentatie workshop Augmented Reality & ErfgoedBeacons
Presentatie workshop Augmented Reality & ErfgoedBeaconsPresentatie workshop Augmented Reality & ErfgoedBeacons
Presentatie workshop Augmented Reality & ErfgoedBeacons
 
Green Manufacturing
Green ManufacturingGreen Manufacturing
Green Manufacturing
 
Diploma and Certification
Diploma and CertificationDiploma and Certification
Diploma and Certification
 
Steven Boyle Graphic Design
Steven Boyle Graphic DesignSteven Boyle Graphic Design
Steven Boyle Graphic Design
 

Ähnlich wie Entity Framework v enterprise aplikacích

Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008RENESTEIN
 
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnySpusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnyMarketingArrowECS_CZ
 
Microservices - morning talk
Microservices -  morning talkMicroservices -  morning talk
Microservices - morning talkJindřich Kubát
 
Vývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročiléVývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročiléRené Stein
 
Prostředky spolupráce v reálném čase
Prostředky spolupráce v reálném časeProstředky spolupráce v reálném čase
Prostředky spolupráce v reálném časeCESNET
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniJakub Holy
 
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduOracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduMarketingArrowECS_CZ
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuRené Stein
 
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Ludek Trefny
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Tomáš Kukol
 
Měříte ptákoviny?
Měříte ptákoviny?Měříte ptákoviny?
Měříte ptákoviny?Lukáš Čech
 
IdM na platformě IBM Tivoli pro UHK
IdM na platformě IBM Tivoli pro UHKIdM na platformě IBM Tivoli pro UHK
IdM na platformě IBM Tivoli pro UHKhurdalek
 

Ähnlich wie Entity Framework v enterprise aplikacích (20)

Czjug Zari 2008
Czjug Zari 2008Czjug Zari 2008
Czjug Zari 2008
 
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změnySpusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
Spusťte si existující VMware infrastrukturu v Cloudu bez jakékoliv změny
 
Microservices - morning talk
Microservices -  morning talkMicroservices -  morning talk
Microservices - morning talk
 
Vývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročiléVývoj wp 7 aplikací pro pokročilé
Vývoj wp 7 aplikací pro pokročilé
 
Prostředky spolupráce v reálném čase
Prostředky spolupráce v reálném časeProstředky spolupráce v reálném čase
Prostředky spolupráce v reálném čase
 
ASP.NET MVC a TDD
ASP.NET MVC a TDDASP.NET MVC a TDD
ASP.NET MVC a TDD
 
Seminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk TestovaniSeminar Nastroje Jednotk Testovani
Seminar Nastroje Jednotk Testovani
 
Úvod do OOP
Úvod do OOPÚvod do OOP
Úvod do OOP
 
TNPW2-2011-10
TNPW2-2011-10TNPW2-2011-10
TNPW2-2011-10
 
TNPW2-2014-06
TNPW2-2014-06TNPW2-2014-06
TNPW2-2014-06
 
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do clouduOracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
Oracle Ravello: Přesuňte si prostředí VMware & KVM do cloudu
 
TNPW2-2014-05
TNPW2-2014-05TNPW2-2014-05
TNPW2-2014-05
 
TNPW2-2013-08
TNPW2-2013-08TNPW2-2013-08
TNPW2-2013-08
 
TNPW2-2012-02
TNPW2-2012-02TNPW2-2012-02
TNPW2-2012-02
 
Dependency injection v .Net Frameworku
Dependency injection v .Net FrameworkuDependency injection v .Net Frameworku
Dependency injection v .Net Frameworku
 
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
Využití TFS jako jednotného úložiště pro heterogenní vývoj (Android, iOS, Win...
 
TNPW2-2012-08
TNPW2-2012-08TNPW2-2012-08
TNPW2-2012-08
 
Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]Smalltalk prakticky [CZ]
Smalltalk prakticky [CZ]
 
Měříte ptákoviny?
Měříte ptákoviny?Měříte ptákoviny?
Měříte ptákoviny?
 
IdM na platformě IBM Tivoli pro UHK
IdM na platformě IBM Tivoli pro UHKIdM na platformě IBM Tivoli pro UHK
IdM na platformě IBM Tivoli pro UHK
 

Mehr von Profinit

Reference Data Management
Reference Data ManagementReference Data Management
Reference Data ManagementProfinit
 
Cloud in examples—(how to) benefit from modern technologies in the cloud
Cloud in examples—(how to) benefit from modern technologies in the cloudCloud in examples—(how to) benefit from modern technologies in the cloud
Cloud in examples—(how to) benefit from modern technologies in the cloudProfinit
 
Building big data pipelines—lessons learned
Building big data pipelines—lessons learnedBuilding big data pipelines—lessons learned
Building big data pipelines—lessons learnedProfinit
 
Understand your data dependencies – Key enabler to efficient modernisation
 Understand your data dependencies – Key enabler to efficient modernisation  Understand your data dependencies – Key enabler to efficient modernisation
Understand your data dependencies – Key enabler to efficient modernisation Profinit
 
Propensity Modelling for Banks
Propensity Modelling for BanksPropensity Modelling for Banks
Propensity Modelling for BanksProfinit
 
Legacy systems modernisation
Legacy systems modernisationLegacy systems modernisation
Legacy systems modernisationProfinit
 
Automating Data Lakes, Data Warehouses and Data Stores
Automating Data Lakes, Data Warehouses and Data StoresAutomating Data Lakes, Data Warehouses and Data Stores
Automating Data Lakes, Data Warehouses and Data StoresProfinit
 
4 Steps Towards Data Transparency
4 Steps Towards Data Transparency4 Steps Towards Data Transparency
4 Steps Towards Data TransparencyProfinit
 
Software systems modernisation
Software systems modernisationSoftware systems modernisation
Software systems modernisationProfinit
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileProfinit
 
Data Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduData Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduProfinit
 
Detekce sociálních vazeb: domácnosti a přátelé
Detekce sociálních vazeb: domácnosti a přáteléDetekce sociálních vazeb: domácnosti a přátelé
Detekce sociálních vazeb: domácnosti a přáteléProfinit
 
Výsledky backtestu propensitního modelu
Výsledky backtestu propensitního modeluVýsledky backtestu propensitního modelu
Výsledky backtestu propensitního modeluProfinit
 
Propensitní modelování
Propensitní modelováníPropensitní modelování
Propensitní modelováníProfinit
 
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...Profinit Webinar: Benefits of Software Systems Modernization over their Repla...
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...Profinit
 
Profinit webinar: Instalment Detector
Profinit webinar: Instalment DetectorProfinit webinar: Instalment Detector
Profinit webinar: Instalment DetectorProfinit
 
Profinit_snidane_DWH_22_10_2019_publish
Profinit_snidane_DWH_22_10_2019_publishProfinit_snidane_DWH_22_10_2019_publish
Profinit_snidane_DWH_22_10_2019_publishProfinit
 
2019 09-23-snidane qa-public
2019 09-23-snidane qa-public2019 09-23-snidane qa-public
2019 09-23-snidane qa-publicProfinit
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-fullProfinit
 
2018 11-28 snidane-serie-kuchyne
2018 11-28 snidane-serie-kuchyne2018 11-28 snidane-serie-kuchyne
2018 11-28 snidane-serie-kuchyneProfinit
 

Mehr von Profinit (20)

Reference Data Management
Reference Data ManagementReference Data Management
Reference Data Management
 
Cloud in examples—(how to) benefit from modern technologies in the cloud
Cloud in examples—(how to) benefit from modern technologies in the cloudCloud in examples—(how to) benefit from modern technologies in the cloud
Cloud in examples—(how to) benefit from modern technologies in the cloud
 
Building big data pipelines—lessons learned
Building big data pipelines—lessons learnedBuilding big data pipelines—lessons learned
Building big data pipelines—lessons learned
 
Understand your data dependencies – Key enabler to efficient modernisation
 Understand your data dependencies – Key enabler to efficient modernisation  Understand your data dependencies – Key enabler to efficient modernisation
Understand your data dependencies – Key enabler to efficient modernisation
 
Propensity Modelling for Banks
Propensity Modelling for BanksPropensity Modelling for Banks
Propensity Modelling for Banks
 
Legacy systems modernisation
Legacy systems modernisationLegacy systems modernisation
Legacy systems modernisation
 
Automating Data Lakes, Data Warehouses and Data Stores
Automating Data Lakes, Data Warehouses and Data StoresAutomating Data Lakes, Data Warehouses and Data Stores
Automating Data Lakes, Data Warehouses and Data Stores
 
4 Steps Towards Data Transparency
4 Steps Towards Data Transparency4 Steps Towards Data Transparency
4 Steps Towards Data Transparency
 
Software systems modernisation
Software systems modernisationSoftware systems modernisation
Software systems modernisation
 
Odborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum MobileOdborná snídaně: Datový sklad jako Perpetuum Mobile
Odborná snídaně: Datový sklad jako Perpetuum Mobile
 
Data Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí clouduData Science a MLOps v prostředí cloudu
Data Science a MLOps v prostředí cloudu
 
Detekce sociálních vazeb: domácnosti a přátelé
Detekce sociálních vazeb: domácnosti a přáteléDetekce sociálních vazeb: domácnosti a přátelé
Detekce sociálních vazeb: domácnosti a přátelé
 
Výsledky backtestu propensitního modelu
Výsledky backtestu propensitního modeluVýsledky backtestu propensitního modelu
Výsledky backtestu propensitního modelu
 
Propensitní modelování
Propensitní modelováníPropensitní modelování
Propensitní modelování
 
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...Profinit Webinar: Benefits of Software Systems Modernization over their Repla...
Profinit Webinar: Benefits of Software Systems Modernization over their Repla...
 
Profinit webinar: Instalment Detector
Profinit webinar: Instalment DetectorProfinit webinar: Instalment Detector
Profinit webinar: Instalment Detector
 
Profinit_snidane_DWH_22_10_2019_publish
Profinit_snidane_DWH_22_10_2019_publishProfinit_snidane_DWH_22_10_2019_publish
Profinit_snidane_DWH_22_10_2019_publish
 
2019 09-23-snidane qa-public
2019 09-23-snidane qa-public2019 09-23-snidane qa-public
2019 09-23-snidane qa-public
 
2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full2019 03-20 snidane-serie-kuchyne-full
2019 03-20 snidane-serie-kuchyne-full
 
2018 11-28 snidane-serie-kuchyne
2018 11-28 snidane-serie-kuchyne2018 11-28 snidane-serie-kuchyne
2018 11-28 snidane-serie-kuchyne
 

Entity Framework v enterprise aplikacích

  • 1. © 2015 Profinit. All rights reserved. Entity Framework v enterprise aplikacích Tomáš Vichta 28. 11. 2015
  • 2. © 2015 Profinit. All rights reserved. 2 Entity Framework v enterprise aplikacích o Design vzorové aplikace o Automapper o CRUD o DbContext
  • 3. © 2015 Profinit. All rights reserved. 3 Entity Framework v enterprise aplikacích o Cílový projekt – Menší až střední datově orientovaná webová aplikace – Převážně atomické CRUD operace (Create, Read, Update, Delete) • Konfigurační nástroje, reporty, jednoduché datové vazby – Zjednodušený CQRS pattern (Command Query Responsibility Segregation) • a přizpůsobený pro použití s EF – Společné sdílené komponenty – Celkem silná vazba na EF • může být nevýhoda • šlo by vylepšit, ale za cenu vyšší složitosti – Logiku pro specifické operace (jiné než klasický CRUD/CQRS) může být vhodnější implementovat paralelně vedle, samostatně • Je pak k diskuzi, zda komplikovat aplikaci 2 odlišnými přístupy pro práci s daty, nebo to celé navrhnout jinak a jednotně.
  • 4. © 2015 Profinit. All rights reserved. Datové objekty a aplikační vrstvy
  • 5. © 2015 Profinit. All rights reserved. AutoMapper o nuget balíček AutoMapper, http://automapper.org/ o Automatické mapování mezi datovým objekty (Entity, Dto objekty, View models, …) o Podpora EF Linq, Expressions (AutoMapper.QueryableExtensions) o Lze integrovat s Dependency Injection frameworky o Podpora pokročilých funkcí (custom mapování) o Podpora mapování collections
  • 6. © 2015 Profinit. All rights reserved. 6 CRUD Queries – zobrazení dat
  • 7. © 2015 Profinit. All rights reserved. 7 CRUD Modifikace dat
  • 8. © 2015 Profinit. All rights reserved. 8 Datové objekty o Datové objekty mají vždy primární klíč: Int32 Id – Toto omezení může někdy vadit, pro CRUD je to tak ale obvykle OK – Často to takto vyžadují GUI komponenty (např. Telerik Kendo grid) o EF entity, BusinessDto a ViewModel objekty – BusinessDto nebo i EF entitu lze poslat až na UI vrstvu – zanášíme tím ale závislost na nižších vrstvách – pro jednoduché scénáře lze akceptovat – správně – samostatné ViewModel objekty pro Create, Update, i Delete • designově OK, ale přidělává to práci • často se používá jediný objekt (přímo EF entita) pro celý CRUD – spíš nedoporučuji, ale záleží na typu a velikosti projektu
  • 9. © 2015 Profinit. All rights reserved. 9 Design obecně o Create/Update/Delete operace – I Update by šel udělat genericky, ale takto je to bezpečnější – Nenačítáme entitu před update/delete, protože to není třeba • Při editaci 1 entity by to typicky nevadilo, problém při editaci mnoha entit najednou o CrudFacade – Šlo by to i bez Facade, možná by to bylo i designově čistější o Dependency Injection – Standard a základ – Co nejméně kombinovat se singletony, statickými třídami a ručně vytvářenými objekty • Problém obecně u Atributů, MVC - Razor helpery, atd. o Zapouzdření – pouze "hlavní" interfaces a datové objekty jsou public – Třídy v Business vrstvě internal – MVC Controllers a další MVC komponenty ve WebUI musí být public • vlastnost MVC a .NET - např. runtime kompilace Views v samostatné app. doméně
  • 10. © 2015 Profinit. All rights reserved. 10 DbContext o Lifecycle – Unit of work – ale jak velkou tu Unit of work uděláme? – PerWebRequest – častý kompromis – Alternativně lze doporučit menší scope: per-facade, per-operation – Pokud váháte, dělejte spíš menší scope, než větší – EF má problémy, když projde ChangeTrackerem stovky a více entit. o Dependency Injection – Objekt jako každý jiný – proč jej neřídit pomocí DI? – Umožní injectovat závislosti, viz. příklad: • IDateTimeFacade • Pro automatické nastavování CreatedAt, ModifiedAt, DeletedAt • Pro testy složitých integrací – možnost uměle posunout čas pomocí testovací implementace • Opatrně potom na používání času na DB serveru – GETDATE(), …. • IAuthenticationService – pro automatické nastavování CreatedBy, ModifiedBy, DeletedBy o Definovat vlastní repository na DbContextem?
  • 11. © 2015 Profinit. All rights reserved. Diskuze
  • 12. © 2015 Profinit. All rights reserved. Díky za pozornost • 1
  • 13. © 2015 Profinit. All rights reserved. Profinit, s.r.o., Tychonova 2, 160 00 Praha 6, +420 224 316 016, www.profinit.eu Společnost PROFINIT je členem nadnárodní skupiny New Frontier Group, která je leadrem v oblasti digitální transformace organizací a firem ve střední a východní Evropě. S více než 2000 zaměstnanci v 17 zemích patří mezi deset největších poskytovatelů ICT služeb v celém CEE regionu a řadí se ke špičce v oblasti vývoje software na zakázku, data managementu, datových skladů a business intelligence. PROFINIT má řadu významných zákazníků z finančního a telekomunikačního sektoru, utilit a státní správy. Společnost se primárně zaměřuje na konzultační služby v oblasti digitální transformace, technologické služby a outsourcing. Podle údajů IDC (2012) patří PROFINIT mezi 5 největších firem v oblasti vývoje software na zakázku v České Republice a je držitelem řady dalších ocenění. Shaping future, delivering results!

Hinweis der Redaktion

  1. -menší vazba, než DbContext v MVC Controlleru; u velkých APP by byl stejně problém měnit ORM vrstvu -spíš bychom měli mluvit o CQRS
  2. -účel vrstev -alternativně lze definovat samostatná DTO pro Create, Edit i Delete -Person.EmailAddresses -PersonViewModel.DisplayName
  3. MappingTests.cs DI – pozor co jde do DB
  4. visibility
  5. visibility
  6. CrudFacade – null v konstruktoru pro danou operaci jí zakáže
  7. -riziko starých dat z jiných operací v Contextu -riziko paralel. updatu jiným requestem (transakcí) – ale to znamená chybný design (transakce vs. timestamps)
  8. UpdatedTrackableFields() Castle factory Castle internal