04 - [ASP.NET Core] Entity Framework Core

17
Entity Framework Core

Transcript of 04 - [ASP.NET Core] Entity Framework Core

Page 1: 04 - [ASP.NET Core] Entity Framework Core

Entity Framework Core

Page 2: 04 - [ASP.NET Core] Entity Framework Core

Comment s’appelle le machin en question ?

Entity Framework Everywhere

Entity Framework 7 (EF7)

Entity Framework Core (EF Core)

Page 3: 04 - [ASP.NET Core] Entity Framework Core

1 C’est quoi, EF Core ?

2 EE EEEE EE EE6

3 EEEEE

Page 4: 04 - [ASP.NET Core] Entity Framework Core

Entity Framework 3.5 SP1

Entity Framework 4

Entity Framework 4.x

Entity Framework 5.x

Entity Framework 6.x

Entity Framework 6.2

Entity Framework CoreRuntime : NuGetTooling : Microsoft Download Center(Dernière version incluse dans Visual Studio)

Nouveaux composants de runtime : NuGetComposants historiques de runtime : .NETTooling : livre avec Visual Studio

Composants de runtime : .NETTooling : livré avec Visual Studio

Comment est déployé Entity Framework ?

Page 5: 04 - [ASP.NET Core] Entity Framework Core

De nouvelles plateformes

.NET FRAMEWORK .NET CORE XAMARINAP

PM

ODEL

SBA

SELI

BRAR

IES

Base Class Library Core Library Mono Class Library

ASP.NET

Windows FormsWPF UWP

ASP.NET Core*

iOSAndroid

Compilers Languages Runtime components

COMMON INFRASTRUCTURE

OS XEF CoreEF6.x

Page 6: 04 - [ASP.NET Core] Entity Framework Core

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

Page 7: 04 - [ASP.NET Core] Entity Framework Core

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

Page 8: 04 - [ASP.NET Core] Entity Framework Core

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

Page 9: 04 - [ASP.NET Core] Entity Framework Core

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

Page 10: 04 - [ASP.NET Core] Entity Framework Core

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

Page 11: 04 - [ASP.NET Core] Entity Framework Core

Démos

EF Core 101

Page 12: 04 - [ASP.NET Core] Entity Framework Core

Démos

Performances améliorées

Page 13: 04 - [ASP.NET Core] Entity Framework Core

Démos

API de métadonnées

simplifiée

Page 14: 04 - [ASP.NET Core] Entity Framework Core

Démos

Extensibilité

Top Level APIDbContext, DbSet, ChangeTracker, Database, etc.

Core ServicesStateManager, CompiledQueryCache, etc.

Database Provider ServicesSqlServerTypeMapper,

SqlServerSqlGenerationHelper, etc.

Page 15: 04 - [ASP.NET Core] Entity Framework Core

Démos

Un modèle, plusieurs

plateformes

Page 16: 04 - [ASP.NET Core] Entity Framework Core

Démos

Un modèle, plusieurs bases de

données

Page 17: 04 - [ASP.NET Core] Entity Framework Core

Démos

Amélioration de la génération de SQL