04 - [ASP.NET Core] Entity Framework Core

Post on 21-Feb-2017

56 views 2 download

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

Entity Framework Core

Comment s’appelle le machin en question ?

Entity Framework Everywhere

Entity Framework 7 (EF7)

Entity Framework Core (EF Core)

1 C’est quoi, EF Core ?

2 EE EEEE EE EE6

3 EEEEE

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 ?

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

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

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

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

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

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

Démos

EF Core 101

Démos

Performances améliorées

Démos

API de métadonnées

simplifiée

Démos

Extensibilité

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

Core ServicesStateManager, CompiledQueryCache, etc.

Database Provider ServicesSqlServerTypeMapper,

SqlServerSqlGenerationHelper, etc.

Démos

Un modèle, plusieurs

plateformes

Démos

Un modèle, plusieurs bases de

données

Démos

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