You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
mchsamples-.net-core/p08_BDD_EntityFramework/ReadMe.md

61 lines
4.4 KiB

# Entity Framework Core 3.0
Entity Framework (EF) Core est un ORM (Object-Relational Mapper) qui permet aux d<>veloppeurs .NET de g<>rer de mani<6E>re simple, l<>g<EFBFBD>re et extensible, des bases de donn<6E>es.
EF permet de g<>rer de nombreux *providers* (SQL Server, SQLite, Cosmos, ...) de mani<6E>re transparente.
EF vous permet <20>galement de mettre <20> jour vos bases de donn<6E>es et d'ex<65>cuter des requ<71>tes sans avoir <20> <20>crire la moindre requ<71>te SQL. Vous pouvez passer par LINQ to SQL qui apportera plus de lisibilit<69> et permettra au compilateur de vous aider <20> d<>tecter vos erreurs.
---
*Note:*
Diff<EFBFBD>rentes solutions existent avec EF pour g<>rer une base de donn<6E>es dont le mod<6F>le existe par exemple. Dans ces exemples, je ne traiterai que la partie *Code First*, c'est-<2D>-dire le cas o<> le mod<6F>le est cr<63><72> <20> partir de vos classes.
---
## Plan
Les exemples sont organis<69>s selon le plan suivant:
1. *Fundamentals* :
Dans cette partie, je donnerai quelques notions pour se connecter <20> une base <20> l'aide de cha<68>ne de connection (*connection strings*), comment utiliser des *providers de tests...*.
Il s'agira en cons<6E>quence d'exemples simples manquants d'explications sur certains points, car ils seront pr<70>sent<6E>s plus tard.
2. *Model* :
Ce chapitre s'attardera sur le lien entre le mod<6F>le et la base de donn<6E>es. En effet, avec EF, l'acc<63>s aux donn<6E>es se fait via le mod<6F>le, c'est-<2D>-dire l'ensemble de vos classes (qui seront reli<6C>es <20> des tables cr<63><72>es plus ou moins automatiquement)
ainsi qu'un contexte (```DbContext```) qui repr<70>sentera une session de connexion avec votre (ou vos) base(s) de donn<6E>es.
Je pr<70>senterai en cons<6E>quence tout d'abord comment <20>crire des classes pour votre mod<6F>le, puis comment <20>crire les diff<66>rentes relations classiques (aggr<67>gation, *one to one*, *one to many*, *many to many*, mais aussi les dictionnaires), comment g<>rer les h<>ritages entre classes du mod<6F>le dans la base de donn<6E>es, etc.
3. *Schemas and migrations* :
Le but de ce chapitre sera de vous montrer comment garder votre mod<6F>le et votre base de donn<6E>es synchronis<69>s.
4. *Querying (LINQ to SQL) and saving data* :
*Language INtegrated Query* (LINQ) est un outil de requ<71>te sur collections et sa version LINQ to SQL vous permet de passer tr<74>s facilement <20> un syst<73>me de requ<71>tes sur les bases de donn<6E>es.
Les requ<71>tes LINQ sont automatiquement traduites en requ<71>tes SQL, vous <20>vitant ainsi d'avoir <20> <20>crire vos requ<71>tes vous-m<>mes. Elles sont d<>s lors beaucoup plus lisibles et faciles <20> <20>crire.
Ce chapitre pr<70>sente comment charger des donn<6E>es, r<>aliser du filtrage, de mani<6E>re synchrone ou asynchrone, etc.
Il montre bien s<>r <20>galement comment r<>aliser le sym<79>trique : mettre <20> jour, supprimer ou ajouter de nouvelles donn<6E>es dans la base.
5. *Database providers* :
EF vous permet de g<>rer votre base de donn<6E>es ind<6E>pendamment du *provider*. Ce chapitre montrera donc comment utiliser diff<66>rents providers parmi lesquels Microsoft SQL Server, SQLite ou encore InMemory dont le but est de permettre de tester la base en m<>moire, sans passer par un *provider*.
---
## Quelle version utiliser ?
Ces exemples sont <20>crits pour .NET Core 3.0, mais vous pouvez utiliser EF Core avec diff<66>rents types projets. Voici les recommendations actuelles de Microsoft quant <20> l'utilisation des version d'EF.
|**EF Core** |**1.x** |**2.x** |**3.x**
|----------------|--------|-----------|---------------
|.NET Standard |1.3 |2.0 |2.1
|.NET Core |1.0 |2.0 |3.0
|.NET Framework |4.5.1 |4.7.2 |(not supported)
|Mono |4.6 |5.4 |6.4
|Xamarin.iOS |10.0 |10.14 |12.16
|Xamarin.Android |7.0 |8.0 |10.0
|UWP |10.0 |10.0.16299 |to be defined
|Unity |2018.1 |2018.1 |to be defined
*Comment lire ce tableau ?*
Si vous voulez utiliser EF Core 3.0 avec une biblioth<74>que de classes <20>crites en .NET Standard, celle-ci doit utiliser au moins .NET Standard 2.1.
Si vous voulez utiliser EF Core 3.0 avec un projet Xamarin.iOS, celui-ci doit <20>tre au moins en version 12.16.
Si vous voulez utiliser EF Core dans une application UWP, vous ne pouvez pour le moment utiliser que EF Core 1.x ou 2.x.
---
*Note :*
Je n'ai pas l'intention de mettre <20> jour les exemples pour Entity Framework 6 ou pour .NET Framework, puisque la version 5 du framework va unifier .NET Framework et .NET Core. En cons<6E>quence, EF Core sera la nouvelle "norme".