TP 2 - Base de Données - Entity Framework

Télécharger au format pdf ou txt
Télécharger au format pdf ou txt
Vous êtes sur la page 1sur 12

Ministère de l’Enseignement Supérieur et de la Recherche Scientifique Année Universitaire : 2020 - 2021

Université de Sfax
École Nationale d’Électronique et des Télécommunications de Sfax
Module : ASP.NET II

Auditoire : 2ère année MP-RITEL

TP 2: Gestion de base de données (Entity Framework)

Objectifs
A. Base de données first
B. Model first

A. Base de données first


1. Créez un nouveau projet MVC vide nomme « BD_First_Tuto ».
2. Ajoutez le modèle d'entité de données en cliquant avec le bouton droit sur le projet dans
l'explorateur de solutions > Ajouter > Nouvel élément. Dans la fenêtre contextuelle,
sélectionnez Modèle de données d'entité ADO.NET, attribuez un nom approprié à
l'EDM (« School ») et cliquez sur le bouton Ajouter.Sélectionnez l'option « EF Designer
à partir de la base de données », puis cliquez sur Suivant.

3. Créez une connexion avec la base de données existante « School » (fournie). En créant
un EDM pour une base de données pour la première fois, il faut créer une nouvelle
connexion en cliquant sur le bouton Nouvelle connexion.

1
4. Dans la fenêtre contextuelle Propriétés de connexion, indiquez le nom du serveur
((localdb)\MSSQLLocalDB : Pour la base de données locale), sélectionnez votre nom de
base de données et cliquez sur le bouton OK.

Une chaîne de connexion est ajoutée au fichier « app.config » avec le nom d'entités
<DBname>. Cliquez sur Suivant.

2
5. Choisissez la version d'Entity Framework 6.0 et cliquez sur « Suivant » pour obtenir
un affichage de toutes les tables, vues et procédures stockées (SP) de la base de
données. Sélectionnez les tables, les vues et les SP que vous souhaitez les manipuler et
cliquez sur « Terminer ». Ainsi, un fichier « Produit.edmx »est ajouté au projet.

6. Ouvrez le concepteur EDM en double-cliquant sur « Produit.edmx ». Ceci affiche


toutes les entités pour les tables sélectionnées et les relations entre elles

3
7. EDM ajoute les paramètres du fournisseur et de chaîne de connexion dans le fichier
« App.config ».

Il est possible d’ouvrir le concepteur EDM en XML où sera affiché les trois parties de
l'EDM: schéma conceptuel (CSDL), schéma de stockage (SSDL) et schéma de
mappage (MSL). Cliquez avec le bouton droit sur Produit.edmx puis cliquez sur
« Ouvrir avec ».

4
B. Model first
Dans l'approche Code-First, on se concentre sur le domaine de l’application et on
commence par créer des classes pour l’entité de domaine plutôt que de concevoir la base
de données, puis de créer les classes correspondantes à la conception de la base de
données.

Pour pouvoir utiliser l'approche Model-First, il faut installer EntityFramework.dll dans le


projet dans Visual Studio via NuGet dans Visual Studio.
1. Créez un nouveau projet « ChoixResto ».
2. Installation de l’API EntityFramework
Faites un clic droit sur votre projet dans l'explorateur de solutions et sélectionnez
« Gérer les paquets NuGet ».Ceci ouvrira la boîte de dialogue « Gérer les paquets
NuGet ». Recherchez « EntityFramework » dans la zone de recherche et appuyez sur
Entrée. Il affiche toutes les API / plug-ins commençant par
EntityFramework.Sélectionnez EntityFramework (assurez-vous que l'auteur est
Microsoft et que la version est 6.x) et cliquez sur Installer. Ceci va ouvrir la boîte de
pré-visualisation. Passez en revue les modifications et cliquez sur OK.Cliquez sur le
bouton « J'accepte » dans la boîte de dialogue Acceptation de licence pour lancer
l'installation.Après l'installation, assurez-vous que la version appropriée de
EntityFramework.dll est incluse dans le projet.

5
3. Création de classes de domaine
Ajoutez dans le répertoire Models, une classe Utilisateur. Chaque utilisateur doit
posséder un identifiant et un prénom.
public class Utilisateur
{
public int Id { get; set; }
public string Prenom { get; set; }
}
Pour manipuler des restaurants, créez la classe Resto avec les attributs suivants: un
identifiant, un nom et un numéro de téléphone :
public class Resto
{
public int Id { get; set; }
public string Nom { get; set; }
public string Telephone { get; set; }
}
Ajoutez la classe « vote » pour qu’un utilisateur puisse choisir un restaurant.
public class Vote
{
public int Id { get; set; }
public virtual Resto Resto { get; set; }
public virtual Utilisateur Utilisateur { get; set; }
}
Ajoutez la classe « Sondage » qui présente la liste de votes pour une date donnée.
public class Sondage
{
public int Id { get; set; }
public DateTime Date { get; set; }
public virtual List<Vote> Votes { get; set; }
}

4. Création de classes de contexte

6
L'approche Model-First nécessite également une classe de contexte qui est dérivée de
la classe DbContext.Créez une classe de contexte qui dérive de la classe DBContext
et expose les propriétés DbSet pour les types que vous souhaitez intégrer au modèle.
Le DbSet est un ensemble de classes d'entités (ou ensemble d'entités).
Créez un contexte permettant d’accéder aux données en déclarant une nouvelle classe
« RestoContext » qui dérive de la classe DbContext.Le point d’entrée de ce contexte
est la liste des sondages et la liste des restaurants. Pour cela, nous utiliserons la
classe DbSet générique comme type de Sondage et des restaurants.
N’oubliez pas d’ajouter l’espace de nom suivant : using System.Data.Entity;
public class RestoContext : DbContext
{
public DbSet<Sondage> Sondages { get; set; }
public DbSet<Resto> Restos { get; set; }
}

5. Accès de données
Ajouter une méthode pour récupérer la liste de tous les restaurants et une méthode
pour créer un nouveau restaurant.Dans le répertoire Models, créez l’interface IDal
public interface IDal : IDisposable
{
void CreerRestaurant(string nom, string telephone);
List<Resto> ObtientTousLesRestaurants();
}
Avec Entity Framework, nous utilisons directement la classe Resto qui est la classe du
modèle que nous avons créé.Créez une classe qui implémente cette interface et qui
permet de lister les différents restaurants enregistrés dans la base et créer de nouveaux
restaurants.On utilise la classe « RestoContext » pour accéder aux différents éléments
de la base de données.
L’objet bdd est instancié dans le constructeur de la DAL et il est par la suite supprimé
en appelant sa méthode Dispose.La méthode SaveChanges permet de sauvegarder les
modifications dans la base de données.
public class Dal : IDal
{
private RestoContext bdd;
public Dal()

7
{
bdd = new RestoContext();
}
public void CreerRestaurant(string nom, string telephone)
{
bdd.Restos.Add(new Resto {Nom=nom,Telephone=telephone });
bdd.SaveChanges();
}
public List<Resto> ObtientTousLesRestaurants()
{
return bdd.Restos.ToList();
}
public void Dispose()
{
bdd.Dispose();
}
}

6. Créer un controleur comme suit:


clique droit sur le dossier controller, puis ajouter un controleur:

8
7. Récupérer la base de données
La plateforme .Net (à partir du Visual Studio 2012) dispose par défaut de la base locale
(LocalDb). Par contre, avec Visual Studio 2010, il faut installer Sql Server Express.

9
Pour se connecter à la base locale, allez dans l’explorateur de serveurs et cliquez sur
Connexion à la base de données.

8. Connexion sur le serveur local de la base de données


Sur la fenêtre d’ajout de connexion, saisissez l’adresse du serveur ainsi que la base de
données. L’adresse est (localdb)\MSSQLLocalDBet le nom de la base sera
ChoixResto.Models.RestoContext. Notez que la base de données s’appelle du même
nom que notre classe de contexte, préfixée par le nom du projet. Enfin, testez la
connexion.

9. Les tables de la base de données

10
Cliquez sur OK, en dépliant l’arborescence, en particulier le répertoire Tables, vous
pourrez voir toutes les tables qui ont été créées par Entity Framework. Elles reflètent
le modèle de données crée.

La table « __MigrationHistory » est une table de migration utilisée par le Model first.
La table Utilisateurs possède un identifiant et un prénom.
La table Sondages possède un identifiant et une date.
La liste de votes associées à notre sondage se trouve dans la table Votes. Le vote possède
un identifiant mais également l’identifiant du resto, de l’utilisateur et d’un sondage. C’est
comme ça que se fait une relation.
Les identifiants sont automatiques, c’est-à-dire auto-incrémentés et uniques. On peut le
voir par exemple en sélectionnant le champ « Id » de la table Utilisateurs.
L’identifiant « id » est « d'identité », cela veut dire qu’il est unique et auto-incrémenté.
L’incrément est de 1.Grâce aux conventions d’Entity Framework, par défaut, si on nomme
unepropriété Id (ou ID) ou NomDeLaClasseId, alors Entity Framework interprète cette
propriété comme une clé primaire de l’entité.

11
10. Testez avec une nouvelle requête
Cliquez droit sur la base de données et choisissez de faire une nouvelle requête.Une
nouvelle fenêtre apparaît qui permet de faire une requête SQL. Pour voir ce qu’il y a
dans la table des restaurants :select * from Restoes
Appuyez sur le petit triangle pour exécuter la requête.

12

Vous aimerez peut-être aussi