Vous êtes sur la page 1sur 16

RÉPUBLIQUE TUNISIENNE

Ministère de L’enseignement Supérieur et de la Recherche Scientifique


Université de Sousse
Ecole Nationale d’ingénieurs de Sousse

ASP.NET Core MVC (.NET 6.0)

TP5 : Configuration des classes du modèle via Fluent API

préparé par: Arwa MILI

supervisé par: Pr Achref ELAMRI

2022-2023
Arwa MILI TP5

1 Objectifs du TP

L’objectif de ce TP est de créer une solution ASP.net Core MVC pour une application de gestion de
restaurants et de leurs propriétaires appelée "Restos" en se basant sur l’approche de développement
"Code First". Aussi, on va configurer les classes du domaine avec Fluent API au lieu des conventions.

2 Etapes de réalisation:

2.1 Installation d’EntityFramework Core :

La première étape est l’installation des deux packages SQLServer et Tools d’EntityFramework. La
version installée est la dernière version stable : 7.0.4 .

Figure 1: Explorateur de la solution ASP.NET RestosManager

2
Arwa MILI TP5

2.2 Création du modèle :

La classe Restaurant.cs et la classe Proprietaire.cs sont créées dans le dossier Models/RestosModel.

Ici , il n y a pas d’attribut "id" pour être reconnu automatiquement comme clé primaire du modèle.
Aussi On n’aura pas d’autres attribut contenant "id" pour référer aux associations. Donc les attributs
qui servent de clés vont être indiqués par suite dans un autre fichier dont on va parler.

Les deux classes contiennet les attributs indiqués dans les figures suivantes :

Figure 2: Restaurant.cs

Figure 3: Proprietaire.cs

3
Arwa MILI TP5

Les propriétés de navigation entre ces deux classes sont ajoutés dans les deux classes comme la figure
ci dessous:

(a) Coté Restaurant (Un seul prop)

(b) Coté propriétaire (Plusieurs restos)

Figure 4: Configuration de l’association OneToMany entre Propriétaire et Restaurant

4
Arwa MILI TP5

Leurs DBSets sont ajoutés dans la classe de contexte appelée RestosDB

Figure 5: Classe de contexte RestosDB

2.3 Configuration du modèle via Fluent API

Fluent API sert à remplacer les annotation des conventions réalisées auparavant en dessus de chaque
attribut dans le modèle.
Cette configuration contient les clés de chaque table , les conditions sur les attributs et aisni que
les associations entre tables et les clés qui réfèrent à ces relations d’association...
Son code est écrit dans la classe de contexte. Il est comme suit :

5
Arwa MILI TP5

Figure 6: Configuration des entités par fluent API (1)

Figure 7: Configuration des entités par fluent API (2)

2.4 Configuration de la connexion à la base de données :

Les étapes effectuées pour se connecter à la base de donnée sont les mêmes que dans les TPs précé-
dents. Elles ccomportent des instructions à ajouter dans program.cs (Service pour lier la classe de
contexe à la base de donnée) et appsettings.json (la chaine de connection).

Figure 8: Configuration de program.cs

6
Arwa MILI TP5

Figure 9: Chaine de connexion dans appsettings.json

2.5 Activation de la Migration Code First

On a fait la migration en tapant la commande "Add-Migration InitialCreate" dans la console de


Nuget. Puis "Update-Database" qui permet de créer les fichiers de migration...

(a) Création initiale

(b) Validation de la création de la base

Figure 10: Activation de la migration Code First

7
Arwa MILI TP5

Figure 11: BDD générée et fichier de migration

2.6 Création des contrôleurs et vues

On a ensuite crée deux contrôleurs : PropriétairesController et RestaurantsController


Les deux vues (de l’action index) des deux contrôleurs précédents sont les suivants:

(a) Index de ProprietairesController

(b) Index de RestaurantsController

Figure 12: Vues Index des classes

8
Arwa MILI TP5

2.7 Mise à jour du modèle

On a ajouté la classe Avis.cs. On a configuré l’association 1-n entre elle et la classe Restautant.cs.
Ensuite on a ajouté sa configuration ( les conditions sur ses attributs et ses associations) sous la
configuration des deux autres classes ,ainsi que son DBSet dans la classe de contexte .
Enfin on a tapé les commandes pour sa migration dans la BDD

Figure 13: Ajout de Avis.cs dans la BDD

On a enfin ajouté le contrôleur de la classe Avis.cs .


Sa vue Index est la suivante :

Figure 14: Vue Index de AvisController

9
Arwa MILI TP5

2.8 Jointure

2.8.1 Lister les avis pour chaque restaurant :

Pour lister les avis de chacun des restos , on a ajouté un lien hypertexte devant chaque restaurant
dans la vue index qui mène vers la vue Avis qui liste les avis pour ce resto (similaire au TP4).
L’action de Avis est développé dans le contrôleur de Restaurant
L’action, la vue Avis ainsi que la ligne à ajouter Index restaurant pour le lien hypertexte et une Vue
Web de Avis sont ci dessous :

Figure 15: action de Avis

Figure 16: Lien hypertexte vers la page Avis

10
Arwa MILI TP5

(a) Html Vue Avis (1)

(b) Html Vue Avis (2)

Figure 17: Vues Index des classes

11
Arwa MILI TP5

Figure 18: Page avis pour un restaurant

2.8.2 Lister les avis donnée sur un restaurant bien déterminé passé en paramètre via son
code

On a développé l’action AvisPourUnResto dans le controleur de Avis. Son code récupère la liste
des ids des restaurants et passe les avis, Dans le html de la vue de cette action , une liste permet de
sélectionner un code particulier et afficher les avis pour le resto ayant ce code. On accède à cette
vue via un lien hypertexte appelé "Choose particular restaurant" depuis l’index de Avis. Les codes
des vues sont les suivants :

Figure 19: action AvisPourUnResto dans AvisController

12
Arwa MILI TP5

(a) Html Vue AvisPourUnResto (1)

(b) Html Vue AvisPourUnResto (2)

Figure 20: Vue AvisPourUnResto

13
Arwa MILI TP5

Dans la figure 21 ci dessous, en sélectionnant id = 2 , on n’affiche que les avis concernant ce Resto
(Chaneb) parmi les avis totals (Figure 14) :

Figure 21: action AvisPourUnResto dans AvisController

2.8.3 Lister les restaurants ayant une note moyenne comprise dans un intervalle (En parti-
culier >=3.5) :

Pour cette partie , on n’a pas développé une nouvelle action , mais on a ajouté un filtre dans la vue
index. Et ajouté le code de ce filtre dans la vue index et le contrôleur index de Restaurants.
L’action index et sa vue sont donc devenuent comme les figures ci-dessous:
En effet, dans l’action , on chargé la liste des restos , puis on a sélectionner les restaurants dont les
avis groupés par restaurant (avisGroup) ayant une moyenne des Notes >= seuilbas et <= seuil
haut (application de Average()) ; Ces valeurs de seuils sont saisis dans le formulaire de la vue
index.
Mais au premier chargement de la page index , on affiche tous les restaurants , c’est pourquoi on
a précisé que si aucun valeur des seuils n’est indiqué ,on retourne la variable restosDbContext con-
tenant tous les restaurants.

14
Arwa MILI TP5

(a) mise à jour de la vue index

(b) modification du html de index

Figure 22: Ajout d’un filtre dans index de RestaurantsController

Donc la page index de Restaurants sera comme suit au premier chargement :

15
Arwa MILI TP5

Figure 23: Page index de Restaurants en n’appliquant aucun filtrage

Et dès qu’on saisit des valeurs de seuils ( note moyenne >= 3.5 çàd : seuil bas >= 3.5 et seuil haut
<=5 ), on aura que ce restaurant affiché :

Figure 24: Les restaurants ayant une note moyenne >=3.5

16

Vous aimerez peut-être aussi