TP3 : Ajout d`un modèle Ajouter des Classes de modèle

publicité
TP3 : Ajout d'un modèle
1- L’approche Code First
Dans cette section, vous ajouterez quelques classes pour gérer les films dans une base de données. Ces
classes vont constituer la partie « modèle » de l'application ASP.NET MVC.
Vous allez utiliser la technologie d'accès aux données de .NET Framework appelée l' Entity Framework pour
définir et travailler avec ces classes du modèle. Entity Framework (souvent dénommé "EF") prend en charge
un modèle de développement appelé Code First. Code First vous permet de créer des objets de modèle en
écrivant des classes simples.
Ajouter des Classes de modèle
Dans l' Explorateur de solutions, faites un clic droit sur le dossier des modèles , sélectionnez Ajouter et
puis sélectionnez classe.
A.RETBI
Environement.Net
2013-2014
Entrez le nom de classe "Movie".
Ajoutez les cinq propriétés suivantes à la classe de Movie :
using System;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
}
Nous allons utiliser la classe Movie pour représenter des films dans une base de données. Chaque instance
d'un objet Movie correspondra à une ligne d'une table de base de données, et chaque propriété de la
classe de Movie sera mappé à une colonne dans la table.
A.RETBI
Environement.Net
2013-2014
Dans le même fichier, ajoutez la classe MovieDBContext suivante :
using System;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
}
La classe MovieDBContext représente l’Entity Framework du contexte de base de données « Movie », qui
gère la récupération, le stockage et la mise à jour des instances de la classe du Movie dans une base de
données. La MovieDBContext dérive de la classe de base de DbContext fournie par Entity Framework.
Afin d'être en mesure de référencer les DbContext et DbSet, vous devez ajouter l'instruction using
suivante en haut du fichier :
using System.Data.Entity;
Vous pouvez le faire en ajoutant manuellement à l'aide de l'instruction, ou vous pouvez faites un clic droit
sur les lignes ondulées rouges et cliquez sur résoudre et puis cliquez using System.Data.Entity.
A.RETBI
Environement.Net
2013-2014
A.RETBI
Environement.Net
2013-2014
Remarque : Les instructions inutilisées de using peuvent être supprimées. Vous pouvez pour cela faire
un clic droit dans le fichier, cliquez sur Organiser les instructions using et puis cliquez sur Remove
unused Using
Nous avons donc ajouté un modèle (le M dans MVC). Dans la section suivante, vous travaillerez avec la
chaîne de connexion de base de données.
A.RETBI
Environement.Net
2013-2014
Création d'une chaîne de connexion et de travailler avec SQL Server
LocalDB
La classe MovieDBContext , que vous avez créé gère la tâche de se connecter à la base de données et de
mapping des objets Movie aux enregistrements de la base de données. Vous n'avez pas réellement à
spécifier quelle base de données à utiliser car l’Entity Framework utilise par défaut LocalDB. Dans cette
section, nous allons ajouter explicitement une chaîne de connexion dans le fichier Web.config de
l'application.
SQL Server Express LocalDB
LocalDB est une version allégée du moteur de SQL Server Express Database qui se lance à la demande et
s'exécute en mode utilisateur. LocalDB s'exécute dans un mode spécial d'exécution de SQL Server Express
qui vous permet de travailler avec des bases de données sous forme de fichiers .mdf . En général, les fichiers
de base de données LocalDB sont conservés dans le dossier App_Data , d'un projet web.
SQL Server Express n'est pas recommandé pour une utilisation dans les applications web de production.
LocalDB en particulier ne devrait pas servir à la production avec une application web parce qu'il n'est pas
conçu pour fonctionner avec IIS. Cependant, une base de données LocalDB peut être facilement migrée vers
SQL Server ou SQL Azure.Dans Visual Studio 2013 (et en 2012), LocalDB est installé par défaut avec Visual
Studio.
Par défaut, Entity Framework recherche une chaîne de connexion, le même nom que la classe de contexte
de l'objet (MovieDBContext pour ce projet).
Ouvrez le fichier racine Web.config application ci-dessous. (Pas le fichier Web.config dans le dossier vues .)
A.RETBI
Environement.Net
2013-2014
Trouver l'élément <connectionStrings> :
A.RETBI
Environement.Net
2013-2014
Ajoutez la chaîne de connexion suivante à l'élément <connectionStrings> dans le fichier Web.config .
<add name="MovieDBContext"
connectionString="DataSource=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;In
tegrated Security=True"
providerName="System.Data.SqlClient"
/>
L'exemple suivant montre une partie du fichier Web.config avec la nouvelle chaîne de connexion a ajouté :
<connectionStrings>
<add
name="DefaultConnection"
connectionString="Data
Source=(LocalDb)\v11.0;AttachDbFilename=|DataDirectory|\aspnet-MvcMovie20130603030321.mdf;Initial
Catalog=aspnet-MvcMovie-20130603030321;Integrated
Security=True" providerName="System.Data.SqlClient" />
<add
name="MovieDBContext"
connectionString="Data
Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated
Security=True" providerName="System.Data.SqlClient"
/>
Les deux chaînes de connexion sont très similaires. La première chaîne de connexion nommée
DefaultConnection et est utilisée pour la base de données « Membership » pour contrôler qui peut
accéder à l'application. Vous avez ajouté la chaîne de connexion spécifique à une base de données LocalDB
nommé Movie.mdf situé dans le dossier App_Data .
A.RETBI
Environement.Net
2013-2014
Le nom de la chaîne de connexion doit correspondre au nom de la classe DbContext .
using System;
using System.Data.Entity;
namespace MvcMovie.Models
{
public class Movie
{
public int ID { get; set; }
public string Title { get; set; }
public DateTime ReleaseDate { get; set; }
public string Genre { get; set; }
public decimal Price { get; set; }
}
public class MovieDBContext : DbContext
{
public DbSet<Movie> Movies { get; set; }
}
}
Si vous ne spécifiez aucune chaîne de connexion, l’ Entity Framework créera une base de données LocalDB
dans le répertoire utilisateurs avec le nom qualifié complet de la classe de DbContext (dans ce cas
MvcMovie.Models.MovieDBContext). Vous pouvez nommer la base de données, aussi longtemps qu'elle
a le suffixe .MDF. Par exemple, nous pourrions nommer la base de données MyFilms.mdf.
2- L’approche Database First
1. Créer une base de données
Nous allons créer en premier lieu une nouvelle base de données.
Allons-y et générons la base de données.



A.RETBI
Ouvrez Visual Studio
Affichage -> Explorateur de serveurs
Cliquez avec le bouton droit sur connexions de données-> Ajouter une connexion...
Environement.Net
2013-2014

Si vous n'avez pas connecté l'Explorateur de serveurs à une base de données avant , vous
devrez sélectionner Microsoft SQL Server comme source de données

Se connecter à SQL Express LocalDb ((localdb) \v11.0) et donnez DatabaseFirst.Blogging
comme nom de base de données
A.RETBI
Environement.Net
2013-2014

A.RETBI
Choisissez OK et il vous demandera si vous voulez créer une nouvelle base de données,
sélectionnez Oui
Environement.Net
2013-2014


La nouvelle base de données apparaît dans l'Explorateur de serveurs, faites un clic droit
dessus et sélectionnez Nouvelle requête
Copiez le code SQL suivant dans la nouvelle requête, puis faites un clic droit sur la requête et
sélectionnez Execute
1. CREATE TABLE [dbo].[Blogs] (
2.
[BlogId] INT IDENTITY (1, 1) NOT NULL,
3.
[Name] NVARCHAR (200) NULL,
4.
[Url] NVARCHAR (200) NULL,
5.
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
6. );
7.
8. CREATE TABLE [dbo].[Posts] (
9.
[PostId] INT IDENTITY (1, 1) NOT NULL,
10.
[Title] NVARCHAR (200) NULL,
11.
[Content] NTEXT NULL,
12.
[BlogId] INT NOT NULL,
13.
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
14.
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFER
ENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
15. );
2. Reverse Engineering Model
Créer un nouveau projet MVC nommé « DBFirst MVC » qui utilise la base de données pour effectuer
des accès aux données :
Nous allons utiliser Entity Framework Designer, qui est inclus dans Visual Studio, pour créer
notre modèle.




A.RETBI
App_Data -> ajoute un nouvel élément...
Sélectionner des données dans le menu de gauche, puis sur ADO.NET Entity Data Model
Entrez BloggingModel comme nom, puis cliquez sur OK
Cela lance l' Assistant Entity Data Model
Environement.Net
2013-2014

Sélectionnez générer à partir de base de données et cliquez sur suivant

Sélectionnez la connexion à la base de données que vous avez créée dans la première
section, saisissez BloggingContext comme nom de la chaîne de connexion et cliquez sur
A.RETBI
Environement.Net
2013-2014
suivant
A.RETBI
Environement.Net
2013-2014

Cochez la case à cocher de « Tables » pour importer toutes les tables et cliquez sur
'Terminer'
Une fois terminé le processus de Reverse Engineering ajoute le nouveau modèle à votre projet
et vous permet de le visualiser dans Entity Framework Designer. Un fichier App.config a
également été ajouté à votre projet avec les détails de connexion pour la base de données.
A.RETBI
Environement.Net
2013-2014
Ensuite, nous devons générer du code à partir du modèle pour générer du code qui utilise
l'API DbContext, qui a été introduite dans les versions ultérieures d'Entity Framework.

Faites un clic droit sur un endroit vide de votre modèle dans le concepteur de l'EF et
sélectionnez Ajouter élément de génération de Code.

Sélectionnez les Modèles en ligne dans le menu de gauche et de la recherche pour DbContext

Sélectionnez l' EF 5.x DbContext générateur en VB, entrez BloggingModel comme nom et
cliquez sur Ajouter
A.RETBI
Environement.Net
2013-2014
Deux
nouveaux
fichiers
seront
listés
dans
l’Explorateur
de
solution,
BloggingModel.Context.tt et BloggingModel.tt qui contiennent le code des classes générés
comme indiqué, ci-après :
A.RETBI
Environement.Net
2013-2014
Téléchargement