Les micro orm, alternatives à entity framework

MSDEVMTL
MSDEVMTLSenior Software Developer/Owner em MSDEVMTL
Les Micro ORM, alternatives
à Entity Framework
Anthony Giretti
Consultant sénior .NET chez Technologies NTER (Loto-Québec)
http://anthonygiretti.com
Introduction
L'arrivée il y 10 ans d'Entity Framework a permis de requêter une base de données
sans écrire une seule ligne de SQL.
Ce qui a permis d’augmenter la productivité des développeurs.
Entity Framework a apporté son lot d'avantages mais aussi d'inconvénients…….
Avantage
 Gain de productivité
Inconvénients
 Performances
 Plus complexe qu’il en a l’air (LazyLoading, EagerLoading)
 Nombreux bugs de mise à jour du modèle EDMX en mode Database First
Les alternatives
Aujourd'hui il existe différentes alternatives à ce dernier, les micro ORM.
Nous allons voir en quoi ils sont intéressants :
 Compatibilité avec les différentes bases de données relationnelles
 Simplicité
 Performance
 Communauté autour de ces derniers
Historique
2002
Entity Framework
PetaPoco
Apparition
d’ADO.NET avec
le Framework .NET
2009 20102003 2004 2005 2006 2007 2008 2011 2012 2013 2014 2015 2016 2017
Massive
Dapper
OrmLite
Simple.Data SqlFu
MicroLite
NPoco Uni.Orm NReco
Artisan Orm
XPoco
Origines de PetaPoco, NPoco et XPoco
Massive
(2011)
PetaPoco
(2011)
NPoco
(2012)
XPoco
(2017)
Scénario utilisé
Simple.Data
 Syntaxe entièrement dynamique, conséquence : pas d'IntelliSense.
 Compatible avec plusieurs bases de données :
 SQL Server, Oracle, Mysql, SqlLite, PostgreSql, SqlAnyWhere, Informix Microsoft Access
 Syntaxe peu compliquée (LINQ-like)
 Supporte les transactions
 Performances décevantes
 Gestion de la connexion douteuse : « Simple.Data is quite aggressive in closing
connections and holds no open connections to a data store by default, so you can keep
the Database object returned from the Open*() methods hanging around without
worrying.»
 Obligation de créer une query AdHoc pour populer un objet (relations non
supportées)
 Non testable unitairement
 Était Prometteur mais malheureusement il n’est plus mis à jour depuis 2013
Massive
 MicroOrm fournissant uniquement des données dynamiques
 Compatible avec peu de bases de données relationelles:
SQL Server, Oracle, SqlLite, PostgreSql
 Double Syntaxe SQL et hybride LINQ / SQL
 Fournit les commandes de base uniquement, syntaxe simpliste (pas de Join par exemple)
 Performances intéressantes
 Supporte les transactions
 Obligation de créer une query AdHoc pour populer un objet (relations non supportées)
 Obligation de faire hériter ses Pocos d’une classe nommée « DynamicModel »,
 Mapper ses données dans un autre objet typé similaire ou se contenter de données dynamiques
 Pas de package NuGet, télécharger deux fichiers sur le repo GitHub
 Testable unitairement ? : pas de réponse à date
MAJ : Async pris en charge depuis peu (télécharger un fichier sur Github)
PetaPoco
 « Inspiré » de Massive, probablement un fork de ce dernier
 Compatible avec les bases de données :
 SQL Server, Oracle, SqlLite, PostgreSql, MySQL, FireBird
 Triple Syntaxe SQL, LINQ-Like et hybride LINQ / SQL
 Performances intéressantes
 Communauté active
 Pas d’obligation de créer une query AdHoc pour populer un objet (relations supportées)
 Supporte .Net Core, les transactions
 Insert, Update, Delete identiques à Massive
 Testable unitairement
 Obligation d’ajouter des attributs de mapping si on utilise des alias dans la requête SQL
 Pas d’Async
NPoco
 Fork de PetaPoco
 Même avantages de PetaPoco, avec des features additionnelles
 Mapping dans un objet existant possible
 Supporte les jeux de données multiples (comme EF, mais plus élégant)
 Async (mais pas toute les opérations)
 Et bien d’autres encore….
 Syntaxe quasiment identique, plus simple dans la plupart des cas
 Gestion des relations simplifiée
 Plus besoin d’attributs de mapping comme PetaPoco, les alias sont mieux pris en
charge
 Testable unitairement
 Moins populaire que PetaPoco, communauté moins active
OrmLite
 Développé par l’équipe ServiceStack
 Compatible avec plusieurs bases de données relationnelles:
 SQL Server, Oracle, Mysql, SqlLite, PostgreSql, FireBird, VistaDB
 Double Syntaxe LINQ-Like (élégante) et SQL
 API riche en fonctionnalités
 Communauté active
 Performances intéressantes
 Supporte .Net Core, les transactions, et le requêtes asynchrones
 Testable unitairement
 Obligation de créer une query AdHoc pour populer un objet (relations non
supportées)
Dapper
 Développé par l’équipe StackExchange
 Compatible avec plusieurs bases de données relationnelles:
 SQL Server, Oracle, Mysql, SqlLite, PostgreSql, FireBird
 API riche en fonctionnalités
 Communauté très active
 Performances très intéressantes (mapping le plus rapide)
 Supporte .Net Core, les transactions, et le requêtes asynchrones
 Relations supportées, mapper facile à utiliser pour populer les relations
 Insert, Update, Delete uniquement en query texte : un peu plus fastidieux à
écrire
 Testable unitairement, grandement facilité avec « DapperWrapper » et
« DapperParameters » pour unit tester les procédures stockées
Aperçu des performances
Select unique avec 500 enregistrements
Aperçu des performances
Select en boucle avec un enregistrement unique
Récapitulatif
Licence /
Installation
Prise en
main
Communauté, documentation,
maturité, Fréquence Maj
Performances Support
différentes Bdd
Support
.Net Core
Transactions Async Testabilité
EF Package Nuget
Massive Télécharger 2
fichiers
Dapper Package Nuget
Ormlite Package Nuget
SimpleData Package Nuget
PetaPoco Package Nuget
NPoco Package Nuget
- Ils supportent tous l’éxécution des procédures stockées, vues, fonctions
- Ils sont tous protégés des injection SQL (paramétrisation des requêtes)
Lesquels sortent du lot?
 NPoco pour la simplicité de sa syntaxe et ses performances
 Dapper pour ses performances exceptionnelles et sa communauté qui l’entoure
 OrmLite pour sa double syntaxe LINQ-like et SQL, et pour ses fonctionnalités
riches, et ses performances
Qu’en conclure ?
 Dapper est aujourd’hui le plus populaire pour ses performances exceptionnelles
 Ormlite et NPoco méritent aussi d’être adoptés
 Faut-il se séparer d’EntityFramework?
 Seul le futur le dira, mais si c’est uniquement pour une raison de performances on peut
en effet le supplanter par un micro ORM
 EntityFramework est plus facile à tester unitairement en mockant son DbContext
À surveiller….
 Simple.Data
 SqlFU
 Artisan ORM
 XPoco
 NReco
 Uni.Orm
1 de 20

Recomendados

Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm... por
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...
Sébastien Coutu: Copy this Meetup Devops - microservices - infrastructure imm...MSDEVMTL
978 visualizações42 slides
Open Source et Microsoft Azure, rêve ou réalité ? por
Open Source et Microsoft Azure, rêve ou réalité ?Open Source et Microsoft Azure, rêve ou réalité ?
Open Source et Microsoft Azure, rêve ou réalité ?Microsoft
453 visualizações41 slides
Industrialisation PHP - Canal+ por
Industrialisation PHP - Canal+Industrialisation PHP - Canal+
Industrialisation PHP - Canal+ekino
4.3K visualizações49 slides
GAB 2015 - Nouveautes sur le stockage de donnees dans Azure por
GAB 2015  - Nouveautes sur le stockage de donnees dans AzureGAB 2015  - Nouveautes sur le stockage de donnees dans Azure
GAB 2015 - Nouveautes sur le stockage de donnees dans AzureJean-Luc Boucho
4.7K visualizações27 slides
Azure Service Fabric pour les développeurs por
Azure Service Fabric pour les développeursAzure Service Fabric pour les développeurs
Azure Service Fabric pour les développeursMicrosoft
354 visualizações29 slides
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag... por
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...
Retour d'expérience de projets Azure IoT "large scale" (MicroServices, portag...Microsoft
498 visualizações29 slides

Mais conteúdo relacionado

Mais procurados

Administration et supervision depuis le Cloud avec Azure Logs Analytics por
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsMicrosoft
1K visualizações26 slides
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo... por
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Microsoft
500 visualizações60 slides
Gab paris 2015 automatisation por
Gab paris 2015   automatisationGab paris 2015   automatisation
Gab paris 2015 automatisationAymeric Weinbach
3.9K visualizações25 slides
Déploiement dans Azure depuis Visual Studio Team Services por
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team ServicesAdrien Siffermann
515 visualizações20 slides
Premiers pas avec Microsoft Azure Search por
Premiers pas avec Microsoft Azure SearchPremiers pas avec Microsoft Azure Search
Premiers pas avec Microsoft Azure SearchMCKLMT
3.9K visualizações21 slides
Introduction to Rust in Production - Servo Mozilla project (Slides) por
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)Quentin Frémeaux
957 visualizações22 slides

Mais procurados(19)

Administration et supervision depuis le Cloud avec Azure Logs Analytics por Microsoft
Administration et supervision depuis le Cloud avec Azure Logs AnalyticsAdministration et supervision depuis le Cloud avec Azure Logs Analytics
Administration et supervision depuis le Cloud avec Azure Logs Analytics
Microsoft1K visualizações
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo... por Microsoft
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Modélisation, déploiement et gestion des infrastructures Cloud : outils et bo...
Microsoft500 visualizações
Gab paris 2015 automatisation por Aymeric Weinbach
Gab paris 2015   automatisationGab paris 2015   automatisation
Gab paris 2015 automatisation
Aymeric Weinbach3.9K visualizações
Déploiement dans Azure depuis Visual Studio Team Services por Adrien Siffermann
Déploiement dans Azure depuis Visual Studio Team ServicesDéploiement dans Azure depuis Visual Studio Team Services
Déploiement dans Azure depuis Visual Studio Team Services
Adrien Siffermann515 visualizações
Premiers pas avec Microsoft Azure Search por MCKLMT
Premiers pas avec Microsoft Azure SearchPremiers pas avec Microsoft Azure Search
Premiers pas avec Microsoft Azure Search
MCKLMT3.9K visualizações
Introduction to Rust in Production - Servo Mozilla project (Slides) por Quentin Frémeaux
Introduction to Rust in Production - Servo Mozilla project (Slides)Introduction to Rust in Production - Servo Mozilla project (Slides)
Introduction to Rust in Production - Servo Mozilla project (Slides)
Quentin Frémeaux957 visualizações
Plan de Reprise d'Activité avec Azure Site Recovery por Microsoft
Plan de Reprise d'Activité avec Azure Site RecoveryPlan de Reprise d'Activité avec Azure Site Recovery
Plan de Reprise d'Activité avec Azure Site Recovery
Microsoft920 visualizações
Introduction to Rust in Production - Servo Mozilla project (Talk) por Quentin Frémeaux
Introduction to Rust in Production - Servo Mozilla project (Talk)Introduction to Rust in Production - Servo Mozilla project (Talk)
Introduction to Rust in Production - Servo Mozilla project (Talk)
Quentin Frémeaux190 visualizações
Cnam cours azure ze cloud intro et présentation generale 2016 por Aymeric Weinbach
Cnam cours azure ze cloud intro et présentation  generale 2016Cnam cours azure ze cloud intro et présentation  generale 2016
Cnam cours azure ze cloud intro et présentation generale 2016
Aymeric Weinbach1K visualizações
Hi-Media Couchbase meetup Paris Nb #1 por Mickaël Le Baillif
Hi-Media Couchbase meetup Paris Nb #1Hi-Media Couchbase meetup Paris Nb #1
Hi-Media Couchbase meetup Paris Nb #1
Mickaël Le Baillif1.5K visualizações
REX Devops Docker por Romain Chalumeau
REX Devops DockerREX Devops Docker
REX Devops Docker
Romain Chalumeau1.7K visualizações
REX sur l'outilage Continuous Delivery por Damien Goldenberg
REX sur l'outilage Continuous DeliveryREX sur l'outilage Continuous Delivery
REX sur l'outilage Continuous Delivery
Damien Goldenberg1.7K visualizações
Google Cloud Composer por Pierre Coste
Google Cloud ComposerGoogle Cloud Composer
Google Cloud Composer
Pierre Coste429 visualizações
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker ! por Publicis Sapient Engineering
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Devoxx France : Kubernetes University, Cap sur l’orchestration Docker !
Publicis Sapient Engineering2K visualizações
Cedric leblond migrer jenkins AWS vers Azure Devops por FactoVia
Cedric leblond migrer jenkins AWS vers Azure DevopsCedric leblond migrer jenkins AWS vers Azure Devops
Cedric leblond migrer jenkins AWS vers Azure Devops
FactoVia119 visualizações
Les nouveautés SQL Server 2016 por Microsoft
Les nouveautés SQL Server 2016Les nouveautés SQL Server 2016
Les nouveautés SQL Server 2016
Microsoft451 visualizações
Meetup Docker Lyon janvier 2018 - Docker 101 por Emmanuel CARRE
Meetup Docker Lyon janvier 2018 - Docker 101Meetup Docker Lyon janvier 2018 - Docker 101
Meetup Docker Lyon janvier 2018 - Docker 101
Emmanuel CARRE152 visualizações
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau por Publicis Sapient Engineering
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim RousseauXebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
XebiCon'17 : Rex Akka dans une architecture microservice - Joachim Rousseau
Publicis Sapient Engineering390 visualizações

Destaque

Cathy Monier: Power Query et Power BI por
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BIMSDEVMTL
835 visualizações16 slides
.Net Core Fall update por
.Net Core Fall update.Net Core Fall update
.Net Core Fall updateMSDEVMTL
742 visualizações15 slides
Introduction à la sécurité dans ASP.NET Core por
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET CoreMSDEVMTL
1.3K visualizações35 slides
Ssis 2016 RC3 por
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3MSDEVMTL
1.9K visualizações19 slides
2017 iosco research report on financial technologies (fintech) por
2017 iosco research report on  financial technologies (fintech)2017 iosco research report on  financial technologies (fintech)
2017 iosco research report on financial technologies (fintech)Ian Beckett
1.6K visualizações76 slides
Le Microsoft Graph et le développement Office 365 por
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365MSDEVMTL
829 visualizações32 slides

Destaque(20)

Cathy Monier: Power Query et Power BI por MSDEVMTL
Cathy Monier: Power Query et Power BICathy Monier: Power Query et Power BI
Cathy Monier: Power Query et Power BI
MSDEVMTL835 visualizações
.Net Core Fall update por MSDEVMTL
.Net Core Fall update.Net Core Fall update
.Net Core Fall update
MSDEVMTL742 visualizações
Introduction à la sécurité dans ASP.NET Core por MSDEVMTL
Introduction à la sécurité dans ASP.NET CoreIntroduction à la sécurité dans ASP.NET Core
Introduction à la sécurité dans ASP.NET Core
MSDEVMTL1.3K visualizações
Ssis 2016 RC3 por MSDEVMTL
Ssis 2016 RC3Ssis 2016 RC3
Ssis 2016 RC3
MSDEVMTL1.9K visualizações
2017 iosco research report on financial technologies (fintech) por Ian Beckett
2017 iosco research report on  financial technologies (fintech)2017 iosco research report on  financial technologies (fintech)
2017 iosco research report on financial technologies (fintech)
Ian Beckett1.6K visualizações
Le Microsoft Graph et le développement Office 365 por MSDEVMTL
Le Microsoft Graph et le développement Office 365Le Microsoft Graph et le développement Office 365
Le Microsoft Graph et le développement Office 365
MSDEVMTL829 visualizações
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14... por Lucas Jellema
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
Introducing NoSQL and MongoDB to complement Relational Databases (AMIS SIG 14...
Lucas Jellema4.9K visualizações
Francis Paquet: Visualisations innovantes por MSDEVMTL
Francis Paquet: Visualisations innovantesFrancis Paquet: Visualisations innovantes
Francis Paquet: Visualisations innovantes
MSDEVMTL897 visualizações
SQL Server 2016 SSRS and BI por MSDEVMTL
SQL Server 2016 SSRS and BISQL Server 2016 SSRS and BI
SQL Server 2016 SSRS and BI
MSDEVMTL10.3K visualizações
Introduction à Application Insights por MSDEVMTL
Introduction à Application InsightsIntroduction à Application Insights
Introduction à Application Insights
MSDEVMTL1.1K visualizações
Groupe Montreal Modern Excel and Power BI 2016 2017 por MSDEVMTL
Groupe Montreal Modern Excel and Power BI 2016 2017Groupe Montreal Modern Excel and Power BI 2016 2017
Groupe Montreal Modern Excel and Power BI 2016 2017
MSDEVMTL1.3K visualizações
Advanced analytics with R and SQL por MSDEVMTL
Advanced analytics with R and SQLAdvanced analytics with R and SQL
Advanced analytics with R and SQL
MSDEVMTL1.7K visualizações
2015 Internet Trends Report por IQbal KHan
2015 Internet Trends Report2015 Internet Trends Report
2015 Internet Trends Report
IQbal KHan1.7K visualizações
Sophie Marchand: Cas power bi de a à z por MSDEVMTL
Sophie Marchand: Cas power bi de a à zSophie Marchand: Cas power bi de a à z
Sophie Marchand: Cas power bi de a à z
MSDEVMTL861 visualizações
Microsoft Modern Analytics por MSDEVMTL
Microsoft Modern AnalyticsMicrosoft Modern Analytics
Microsoft Modern Analytics
MSDEVMTL1.6K visualizações
Mongo db a deep dive of mongodb indexes por Rajesh Kumar
Mongo db  a deep dive of mongodb indexesMongo db  a deep dive of mongodb indexes
Mongo db a deep dive of mongodb indexes
Rajesh Kumar491 visualizações
Comparing 30 MongoDB operations with Oracle SQL statements por Lucas Jellema
Comparing 30 MongoDB operations with Oracle SQL statementsComparing 30 MongoDB operations with Oracle SQL statements
Comparing 30 MongoDB operations with Oracle SQL statements
Lucas Jellema6.1K visualizações
Tracxn Research - Healthcare Analytics Landscape, February 2017 por Tracxn
Tracxn Research - Healthcare Analytics Landscape, February 2017Tracxn Research - Healthcare Analytics Landscape, February 2017
Tracxn Research - Healthcare Analytics Landscape, February 2017
Tracxn2.7K visualizações
Tracxn Research - Insurance Tech Landscape, February 2017 por Tracxn
Tracxn Research - Insurance Tech Landscape, February 2017Tracxn Research - Insurance Tech Landscape, February 2017
Tracxn Research - Insurance Tech Landscape, February 2017
Tracxn4.7K visualizações
How ddd, cqrs and event sourcing constitute the architecture of the future por MSDEVMTL
How ddd, cqrs and event sourcing constitute the architecture of the futureHow ddd, cqrs and event sourcing constitute the architecture of the future
How ddd, cqrs and event sourcing constitute the architecture of the future
MSDEVMTL1.7K visualizações

Similar a Les micro orm, alternatives à entity framework

Entity framework core 2 vs micro orm performances por
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performancesMSDEVMTL
1.3K visualizações21 slides
SQL Server et les développeurs por
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs Microsoft
600 visualizações34 slides
JavaScript aussi sur le serveur et jusque dans le cloud? por
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?Microsoft
156 visualizações40 slides
JavaScript aussi sur le serveur et jusque dans le cloud? por
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?benjguin
724 visualizações40 slides
Server Side Javascript in the cloud por
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloudstefounet
812 visualizações40 slides
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData por
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataDe A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataMicrosoft
1.4K visualizações26 slides

Similar a Les micro orm, alternatives à entity framework(20)

Entity framework core 2 vs micro orm performances por MSDEVMTL
Entity framework core 2 vs micro orm performancesEntity framework core 2 vs micro orm performances
Entity framework core 2 vs micro orm performances
MSDEVMTL1.3K visualizações
SQL Server et les développeurs por Microsoft
SQL Server et les développeurs SQL Server et les développeurs
SQL Server et les développeurs
Microsoft600 visualizações
JavaScript aussi sur le serveur et jusque dans le cloud? por Microsoft
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
Microsoft156 visualizações
JavaScript aussi sur le serveur et jusque dans le cloud? por benjguin
JavaScript aussi sur le serveur et jusque dans le cloud?JavaScript aussi sur le serveur et jusque dans le cloud?
JavaScript aussi sur le serveur et jusque dans le cloud?
benjguin724 visualizações
Server Side Javascript in the cloud por stefounet
Server Side Javascript in the cloudServer Side Javascript in the cloud
Server Side Javascript in the cloud
stefounet812 visualizações
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData por Microsoft
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en ODataDe A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
De A à Z: Accès aux données avec Entity Framework 4.2 et publication en OData
Microsoft1.4K visualizações
Entity_framework_db first por Zineb ELGARRAI
Entity_framework_db firstEntity_framework_db first
Entity_framework_db first
Zineb ELGARRAI273 visualizações
.NET Microframework, les joies de l'électronique et du code pour tous por Microsoft
.NET Microframework, les joies de l'électronique et du code pour tous.NET Microframework, les joies de l'électronique et du code pour tous
.NET Microframework, les joies de l'électronique et du code pour tous
Microsoft481 visualizações
Javavs net por Nicolas De Loof
Javavs netJavavs net
Javavs net
Nicolas De Loof806 visualizações
Common features in webapi aspnetcore por MSDEVMTL
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
MSDEVMTL107 visualizações
Environnements & Développements por Paulin CHOUDJA
Environnements & DéveloppementsEnvironnements & Développements
Environnements & Développements
Paulin CHOUDJA993 visualizações
Alt.net spring.net por Mathias Kluba
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
Mathias Kluba360 visualizações
Alt.net spring.net por Mathias Kluba
Alt.net spring.netAlt.net spring.net
Alt.net spring.net
Mathias Kluba637 visualizações
Cours services web_fabrice_mourlin por angeeLee
Cours services web_fabrice_mourlinCours services web_fabrice_mourlin
Cours services web_fabrice_mourlin
angeeLee2.9K visualizações
Annexe1 éTude Comparative Sur Les Moteurs De Recherche por Mohamed Ben Bouzid
Annexe1   éTude Comparative Sur Les Moteurs De RechercheAnnexe1   éTude Comparative Sur Les Moteurs De Recherche
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
Mohamed Ben Bouzid1.5K visualizações
Introduction au Domain Driven Design por DNG Consulting
Introduction au Domain Driven DesignIntroduction au Domain Driven Design
Introduction au Domain Driven Design
DNG Consulting4.6K visualizações
ASP.NET Core: Pourquoi, comment por Arnaud Weil
ASP.NET Core:Pourquoi, commentASP.NET Core:Pourquoi, comment
ASP.NET Core: Pourquoi, comment
Arnaud Weil68 visualizações
Mappingobjetrelationnel[1] por linasafaa
Mappingobjetrelationnel[1]Mappingobjetrelationnel[1]
Mappingobjetrelationnel[1]
linasafaa556 visualizações
Du hard et des réseaux: Les outils pour construire l'internet des objets chez... por Microsoft
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Du hard et des réseaux: Les outils pour construire l'internet des objets chez...
Microsoft768 visualizações

Mais de MSDEVMTL

Intro grpc.net por
Intro  grpc.netIntro  grpc.net
Intro grpc.netMSDEVMTL
1.5K visualizações22 slides
Grpc and asp.net partie 2 por
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2MSDEVMTL
234 visualizações22 slides
Property based testing por
Property based testingProperty based testing
Property based testingMSDEVMTL
186 visualizações66 slides
Improve cloud visibility and cost in Microsoft Azure por
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft AzureMSDEVMTL
170 visualizações33 slides
Return on Ignite 2019: Azure, .NET, A.I. & Data por
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & DataMSDEVMTL
189 visualizações61 slides
C sharp 8.0 new features por
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new featuresMSDEVMTL
147 visualizações29 slides

Mais de MSDEVMTL(20)

Intro grpc.net por MSDEVMTL
Intro  grpc.netIntro  grpc.net
Intro grpc.net
MSDEVMTL1.5K visualizações
Grpc and asp.net partie 2 por MSDEVMTL
Grpc and asp.net partie 2Grpc and asp.net partie 2
Grpc and asp.net partie 2
MSDEVMTL234 visualizações
Property based testing por MSDEVMTL
Property based testingProperty based testing
Property based testing
MSDEVMTL186 visualizações
Improve cloud visibility and cost in Microsoft Azure por MSDEVMTL
Improve cloud visibility and cost in Microsoft AzureImprove cloud visibility and cost in Microsoft Azure
Improve cloud visibility and cost in Microsoft Azure
MSDEVMTL170 visualizações
Return on Ignite 2019: Azure, .NET, A.I. & Data por MSDEVMTL
Return on Ignite 2019: Azure, .NET, A.I. & DataReturn on Ignite 2019: Azure, .NET, A.I. & Data
Return on Ignite 2019: Azure, .NET, A.I. & Data
MSDEVMTL189 visualizações
C sharp 8.0 new features por MSDEVMTL
C sharp 8.0 new featuresC sharp 8.0 new features
C sharp 8.0 new features
MSDEVMTL147 visualizações
Asp.net core 3 por MSDEVMTL
Asp.net core 3Asp.net core 3
Asp.net core 3
MSDEVMTL236 visualizações
MSDEVMTL Informations 2019 por MSDEVMTL
MSDEVMTL Informations 2019MSDEVMTL Informations 2019
MSDEVMTL Informations 2019
MSDEVMTL540 visualizações
Common features in webapi aspnetcore por MSDEVMTL
Common features in webapi aspnetcoreCommon features in webapi aspnetcore
Common features in webapi aspnetcore
MSDEVMTL395 visualizações
Groupe Excel et Power BI - Rencontre du 25 septembre 2018 por MSDEVMTL
Groupe Excel et Power BI  - Rencontre du 25 septembre 2018Groupe Excel et Power BI  - Rencontre du 25 septembre 2018
Groupe Excel et Power BI - Rencontre du 25 septembre 2018
MSDEVMTL212 visualizações
Api gateway por MSDEVMTL
Api gatewayApi gateway
Api gateway
MSDEVMTL220 visualizações
Stephane Lapointe: Governance in Azure, keep control of your environments por MSDEVMTL
Stephane Lapointe: Governance in Azure, keep control of your environmentsStephane Lapointe: Governance in Azure, keep control of your environments
Stephane Lapointe: Governance in Azure, keep control of your environments
MSDEVMTL416 visualizações
Eric Routhier: Garder le contrôle sur vos coûts Azure por MSDEVMTL
Eric Routhier: Garder le contrôle sur vos coûts AzureEric Routhier: Garder le contrôle sur vos coûts Azure
Eric Routhier: Garder le contrôle sur vos coûts Azure
MSDEVMTL113 visualizações
Data science presentation por MSDEVMTL
Data science presentationData science presentation
Data science presentation
MSDEVMTL38.3K visualizações
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S... por MSDEVMTL
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
Michel Ouellette + Gabriel Lainesse: Process Automation & Data Analytics at S...
MSDEVMTL380 visualizações
Open id connect, azure ad, angular 5, web api core por MSDEVMTL
Open id connect, azure ad, angular 5, web api coreOpen id connect, azure ad, angular 5, web api core
Open id connect, azure ad, angular 5, web api core
MSDEVMTL1.2K visualizações
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics por MSDEVMTL
Yoann Clombe : Fail fast, iterate quickly with power bi and google analyticsYoann Clombe : Fail fast, iterate quickly with power bi and google analytics
Yoann Clombe : Fail fast, iterate quickly with power bi and google analytics
MSDEVMTL408 visualizações
CAE: etude de cas - Rolling Average por MSDEVMTL
CAE: etude de cas - Rolling AverageCAE: etude de cas - Rolling Average
CAE: etude de cas - Rolling Average
MSDEVMTL80 visualizações
CAE: etude de cas por MSDEVMTL
CAE: etude de casCAE: etude de cas
CAE: etude de cas
MSDEVMTL421 visualizações
Dan Edwards : Data visualization best practices with Power BI por MSDEVMTL
Dan Edwards : Data visualization best practices with Power BIDan Edwards : Data visualization best practices with Power BI
Dan Edwards : Data visualization best practices with Power BI
MSDEVMTL943 visualizações

Les micro orm, alternatives à entity framework

  • 1. Les Micro ORM, alternatives à Entity Framework Anthony Giretti Consultant sénior .NET chez Technologies NTER (Loto-Québec) http://anthonygiretti.com
  • 2. Introduction L'arrivée il y 10 ans d'Entity Framework a permis de requêter une base de données sans écrire une seule ligne de SQL. Ce qui a permis d’augmenter la productivité des développeurs. Entity Framework a apporté son lot d'avantages mais aussi d'inconvénients…….
  • 3. Avantage  Gain de productivité
  • 4. Inconvénients  Performances  Plus complexe qu’il en a l’air (LazyLoading, EagerLoading)  Nombreux bugs de mise à jour du modèle EDMX en mode Database First
  • 5. Les alternatives Aujourd'hui il existe différentes alternatives à ce dernier, les micro ORM. Nous allons voir en quoi ils sont intéressants :  Compatibilité avec les différentes bases de données relationnelles  Simplicité  Performance  Communauté autour de ces derniers
  • 6. Historique 2002 Entity Framework PetaPoco Apparition d’ADO.NET avec le Framework .NET 2009 20102003 2004 2005 2006 2007 2008 2011 2012 2013 2014 2015 2016 2017 Massive Dapper OrmLite Simple.Data SqlFu MicroLite NPoco Uni.Orm NReco Artisan Orm XPoco
  • 7. Origines de PetaPoco, NPoco et XPoco Massive (2011) PetaPoco (2011) NPoco (2012) XPoco (2017)
  • 9. Simple.Data  Syntaxe entièrement dynamique, conséquence : pas d'IntelliSense.  Compatible avec plusieurs bases de données :  SQL Server, Oracle, Mysql, SqlLite, PostgreSql, SqlAnyWhere, Informix Microsoft Access  Syntaxe peu compliquée (LINQ-like)  Supporte les transactions  Performances décevantes  Gestion de la connexion douteuse : « Simple.Data is quite aggressive in closing connections and holds no open connections to a data store by default, so you can keep the Database object returned from the Open*() methods hanging around without worrying.»  Obligation de créer une query AdHoc pour populer un objet (relations non supportées)  Non testable unitairement  Était Prometteur mais malheureusement il n’est plus mis à jour depuis 2013
  • 10. Massive  MicroOrm fournissant uniquement des données dynamiques  Compatible avec peu de bases de données relationelles: SQL Server, Oracle, SqlLite, PostgreSql  Double Syntaxe SQL et hybride LINQ / SQL  Fournit les commandes de base uniquement, syntaxe simpliste (pas de Join par exemple)  Performances intéressantes  Supporte les transactions  Obligation de créer une query AdHoc pour populer un objet (relations non supportées)  Obligation de faire hériter ses Pocos d’une classe nommée « DynamicModel »,  Mapper ses données dans un autre objet typé similaire ou se contenter de données dynamiques  Pas de package NuGet, télécharger deux fichiers sur le repo GitHub  Testable unitairement ? : pas de réponse à date MAJ : Async pris en charge depuis peu (télécharger un fichier sur Github)
  • 11. PetaPoco  « Inspiré » de Massive, probablement un fork de ce dernier  Compatible avec les bases de données :  SQL Server, Oracle, SqlLite, PostgreSql, MySQL, FireBird  Triple Syntaxe SQL, LINQ-Like et hybride LINQ / SQL  Performances intéressantes  Communauté active  Pas d’obligation de créer une query AdHoc pour populer un objet (relations supportées)  Supporte .Net Core, les transactions  Insert, Update, Delete identiques à Massive  Testable unitairement  Obligation d’ajouter des attributs de mapping si on utilise des alias dans la requête SQL  Pas d’Async
  • 12. NPoco  Fork de PetaPoco  Même avantages de PetaPoco, avec des features additionnelles  Mapping dans un objet existant possible  Supporte les jeux de données multiples (comme EF, mais plus élégant)  Async (mais pas toute les opérations)  Et bien d’autres encore….  Syntaxe quasiment identique, plus simple dans la plupart des cas  Gestion des relations simplifiée  Plus besoin d’attributs de mapping comme PetaPoco, les alias sont mieux pris en charge  Testable unitairement  Moins populaire que PetaPoco, communauté moins active
  • 13. OrmLite  Développé par l’équipe ServiceStack  Compatible avec plusieurs bases de données relationnelles:  SQL Server, Oracle, Mysql, SqlLite, PostgreSql, FireBird, VistaDB  Double Syntaxe LINQ-Like (élégante) et SQL  API riche en fonctionnalités  Communauté active  Performances intéressantes  Supporte .Net Core, les transactions, et le requêtes asynchrones  Testable unitairement  Obligation de créer une query AdHoc pour populer un objet (relations non supportées)
  • 14. Dapper  Développé par l’équipe StackExchange  Compatible avec plusieurs bases de données relationnelles:  SQL Server, Oracle, Mysql, SqlLite, PostgreSql, FireBird  API riche en fonctionnalités  Communauté très active  Performances très intéressantes (mapping le plus rapide)  Supporte .Net Core, les transactions, et le requêtes asynchrones  Relations supportées, mapper facile à utiliser pour populer les relations  Insert, Update, Delete uniquement en query texte : un peu plus fastidieux à écrire  Testable unitairement, grandement facilité avec « DapperWrapper » et « DapperParameters » pour unit tester les procédures stockées
  • 15. Aperçu des performances Select unique avec 500 enregistrements
  • 16. Aperçu des performances Select en boucle avec un enregistrement unique
  • 17. Récapitulatif Licence / Installation Prise en main Communauté, documentation, maturité, Fréquence Maj Performances Support différentes Bdd Support .Net Core Transactions Async Testabilité EF Package Nuget Massive Télécharger 2 fichiers Dapper Package Nuget Ormlite Package Nuget SimpleData Package Nuget PetaPoco Package Nuget NPoco Package Nuget - Ils supportent tous l’éxécution des procédures stockées, vues, fonctions - Ils sont tous protégés des injection SQL (paramétrisation des requêtes)
  • 18. Lesquels sortent du lot?  NPoco pour la simplicité de sa syntaxe et ses performances  Dapper pour ses performances exceptionnelles et sa communauté qui l’entoure  OrmLite pour sa double syntaxe LINQ-like et SQL, et pour ses fonctionnalités riches, et ses performances
  • 19. Qu’en conclure ?  Dapper est aujourd’hui le plus populaire pour ses performances exceptionnelles  Ormlite et NPoco méritent aussi d’être adoptés  Faut-il se séparer d’EntityFramework?  Seul le futur le dira, mais si c’est uniquement pour une raison de performances on peut en effet le supplanter par un micro ORM  EntityFramework est plus facile à tester unitairement en mockant son DbContext
  • 20. À surveiller….  Simple.Data  SqlFU  Artisan ORM  XPoco  NReco  Uni.Orm