6. De nouveaux providers
EF Core n’est plus vraiment un ORM, puisqu’il ne gère plus seulement
le monde relationnel.
Microsoft.EntityFrameworkCore
Bases relationnelles
• SQL Server
• PostGreSQL
• SQLLite
• SQLCompact
NoSQL
• Redis
• Azure Table
Storage
In memory
Services communs à toutes / une
majorité de plateformes
• Métadonnées
• Unit of Work
• Repository
• Change tracking
• Génération de SQL
NB : EF 1.0 ne comprend que les
providers relationnels et in memory
7. Légèreté et extensibilité
Une API de haut niveau basée sur un coeur modulaire
• DbContext et DbSet = métadonnées, change tracking, génération de SQL, unit
of work et repository
EF Core est développé sous la forme d’une collection de services
• Assemblage suivant les principes de l’injection de dépendances
• Chaque service est facile à utiliser, remplacer et étendre
Consommation faible en ressources mémoire et CPU
• C’est assez important quand on pense devices mobiles et cloud
Mécanisme pay-per-play : j’utilise uniquement ce dont j’ai besoin
8. EF Core vs EF6
EF Core tient compte de son historique :
• L’API de haut niveau ne change pas fondamentalement par rapport à
EF6
• Les choses ne changent pas pour le simple fait de changer
… mais n’est pas contraint par ce dernier
• Réécriture complète
• Le cœur n’a plus rien à voir avec l’ancien
• Toutes les fonctionnalités d’EF6 ne seront pas portées
9. EF Core vs EF6
EF6 est stable et mûr
• 8 ans depuis la v1.0
• Un écosystème de providers riche
• Continuera d’être supporté et maintenu
EF Core est une vraie v1.0
• Couverture fonctionnelle encore incomplète
• Sa première version ne vient qu’avec quelques providers
10. EF Core vs EF6
EF6 continue d’être un bon choix pour beaucoup d’applications.
Réfléchissez bien avant d’adopter EF Core
• Des fonctionnalités non-encore implémentées (mapping vers des procédures
stockées, données spatiales, visualisation graphique du modèle…)
• La base de code est récente ! Le traducteur Linq > SQL n’est pas encore au niveau
d’EF6.
Passer d’EF6 vers EF Core est une migration, pas une mise à jour
• Les projets simples seront faciles à migrer
• Certaines API ont radicalement changé
• Attention aux différences de comportement entre API nommées de façon
similaire
14. Démos
Extensibilité
Top Level API
DbContext, DbSet, ChangeTracker, Database, etc.
Core Services
StateManager, CompiledQueryCache, etc.
Database Provider Services
SqlServerTypeMapper,
SqlServerSqlGenerationHelper, etc.