Tutoriel : Prise en main d’EF Database First à l’aide de MVC 5
À l’aide de MVC, Entity Framework et ASP.NET la structure Scaffolding, vous pouvez créer une application web qui fournit une interface à une base de données existante. Cette série de tutoriels vous montre comment générer automatiquement du code qui permet aux utilisateurs d’afficher, de modifier, de créer et de supprimer des données qui résident dans une table de base de données. Le code généré correspond aux colonnes de la table de base de données. Dans la dernière partie de la série, vous découvrez comment ajouter des annotations de données au modèle de données pour spécifier les exigences de validation et afficher la mise en forme. Lorsque vous avez terminé, vous pouvez passer à un article Azure pour apprendre à déployer une application .NET et une base de données SQL sur Azure App Service.
Ce tutoriel montre comment commencer avec une base de données existante et créer rapidement une application web qui permet aux utilisateurs d’interagir avec les données. Il utilise Entity Framework 6 et MVC 5 pour générer l’application web. La fonctionnalité ASP.NET de génération de modèles vous permet de générer automatiquement du code pour l’affichage, la mise à jour, la création et la suppression de données. À l’aide des outils de publication dans Visual Studio, vous pouvez facilement déployer le site et la base de données sur Azure.
Cette partie de la série se concentre sur la création d’une base de données et son remplissage avec des données.
Cette série a été écrite avec contributions de Tom Dykstra et Rick Anderson. Il a été amélioré en fonction des commentaires des utilisateurs dans la section commentaires.
Dans ce tutoriel, vous allez :
- Configurer la base de données
Prérequis
Configurer la base de données
Pour imiter l’environnement d’une base de données existante, vous allez d’abord créer une base de données avec des données préremplies, puis créer votre application web qui se connecte à la base de données.
Ce tutoriel a été développé à l’aide de LocalDB avec Visual Studio 2017. Vous pouvez utiliser un serveur de base de données existant au lieu de LocalDB, mais selon votre version de Visual Studio et votre type de base de données, tous les outils de données de Visual Studio peuvent ne pas être pris en charge. Si les outils ne sont pas disponibles pour votre base de données, vous devrez peut-être effectuer certaines des étapes spécifiques à la base de données dans la suite de gestion de votre base de données.
Si vous rencontrez un problème avec les outils de base de données dans votre version de Visual Studio, assurez-vous d’avoir installé la dernière version des outils de base de données. Pour plus d’informations sur la mise à jour ou l’installation des outils de base de données, consultez Microsoft SQL Server Data Tools.
Lancez Visual Studio et créez un projet de base de données SQL Server. Nommez le projet ContosoUniversityData.
Vous disposez maintenant d’un projet de base de données vide. Pour vous assurer que vous pouvez déployer cette base de données sur Azure, vous allez définir Azure SQL base de données comme plateforme cible pour le projet. La définition de la plateforme cible ne déploie pas réellement la base de données ; cela signifie uniquement que le projet de base de données vérifie que la conception de la base de données est compatible avec la plateforme cible. Pour définir la plateforme cible, ouvrez les Propriétés du projet et sélectionnez Microsoft Azure SQL Database pour la plateforme cible.
Vous pouvez créer les tables nécessaires pour ce didacticiel en ajoutant des scripts SQL qui définissent les tables. Cliquez avec le bouton droit sur votre projet et ajoutez un nouvel élément. Sélectionnez Tables et vues>Table et nommez-la Student.
Dans le fichier de table, remplacez la commande T-SQL par le code suivant pour créer la table.
CREATE TABLE [dbo].[Student] (
[StudentID] INT IDENTITY (1, 1) NOT NULL,
[LastName] NVARCHAR (50) NULL,
[FirstName] NVARCHAR (50) NULL,
[EnrollmentDate] DATETIME NULL,
PRIMARY KEY CLUSTERED ([StudentID] ASC)
)
Notez que la fenêtre de conception se synchronise automatiquement avec le code. Vous pouvez utiliser le code ou le concepteur.
Ajoutez une autre table. Cette fois, nommez-le Course et utilisez la commande T-SQL suivante.
CREATE TABLE [dbo].[Course] (
[CourseID] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Credits] INT NULL,
PRIMARY KEY CLUSTERED ([CourseID] ASC)
)
Et répétez une autre fois pour créer une table nommée Inscription.
CREATE TABLE [dbo].[Enrollment] (
[EnrollmentID] INT IDENTITY (1, 1) NOT NULL,
[Grade] DECIMAL(3, 2) NULL,
[CourseID] INT NOT NULL,
[StudentID] INT NOT NULL,
PRIMARY KEY CLUSTERED ([EnrollmentID] ASC),
CONSTRAINT [FK_dbo.Enrollment_dbo.Course_CourseID] FOREIGN KEY ([CourseID])
REFERENCES [dbo].[Course] ([CourseID]) ON DELETE CASCADE,
CONSTRAINT [FK_dbo.Enrollment_dbo.Student_StudentID] FOREIGN KEY ([StudentID])
REFERENCES [dbo].[Student] ([StudentID]) ON DELETE CASCADE
)
Vous pouvez remplir votre base de données avec des données via un script qui est exécuté après le déploiement de la base de données. Ajoutez un script de post-déploiement au projet. Cliquez avec le bouton droit sur votre projet et ajoutez un nouvel élément. SélectionnezScript de post-déploiementscripts> utilisateur. Vous pouvez utiliser le nom par défaut.
Ajoutez le code T-SQL suivant au script de post-déploiement. Ce script ajoute simplement des données à la base de données lorsqu’aucun enregistrement correspondant n’est trouvé. Il ne remplace ni ne supprime les données que vous avez entrées dans la base de données.
MERGE INTO Course AS Target
USING (VALUES
(1, 'Economics', 3),
(2, 'Literature', 3),
(3, 'Chemistry', 4)
)
AS Source (CourseID, Title, Credits)
ON Target.CourseID = Source.CourseID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Title, Credits)
VALUES (Title, Credits);
MERGE INTO Student AS Target
USING (VALUES
(1, 'Tibbetts', 'Donnie', '2013-09-01'),
(2, 'Guzman', 'Liza', '2012-01-13'),
(3, 'Catlett', 'Phil', '2011-09-03')
)
AS Source (StudentID, LastName, FirstName, EnrollmentDate)
ON Target.StudentID = Source.StudentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (LastName, FirstName, EnrollmentDate)
VALUES (LastName, FirstName, EnrollmentDate);
MERGE INTO Enrollment AS Target
USING (VALUES
(1, 2.00, 1, 1),
(2, 3.50, 1, 2),
(3, 4.00, 2, 3),
(4, 1.80, 2, 1),
(5, 3.20, 3, 1),
(6, 4.00, 3, 2)
)
AS Source (EnrollmentID, Grade, CourseID, StudentID)
ON Target.EnrollmentID = Source.EnrollmentID
WHEN NOT MATCHED BY TARGET THEN
INSERT (Grade, CourseID, StudentID)
VALUES (Grade, CourseID, StudentID);
Il est important de noter que le script de post-déploiement est exécuté chaque fois que vous déployez votre projet de base de données. Par conséquent, vous devez soigneusement prendre en compte vos besoins lors de l’écriture de ce script. Dans certains cas, vous souhaiterez peut-être recommencer à partir d’un ensemble de données connu chaque fois que le projet est déployé. Dans d’autres cas, il se peut que vous ne souhaitiez pas modifier les données existantes. En fonction de vos besoins, vous pouvez décider si vous avez besoin d’un script de post-déploiement ou de ce que vous devez inclure dans le script. Pour plus d’informations sur le remplissage de votre base de données avec un script de post-déploiement, consultez Inclusion de données dans un projet de base de données SQL Server.
Vous disposez maintenant de 4 fichiers de script SQL, mais pas de tables réelles. Vous êtes prêt à déployer votre projet de base de données sur localdb. Dans Visual Studio, cliquez sur le bouton Démarrer (ou F5) pour générer et déployer votre projet de base de données. Consultez l’onglet Sortie pour vérifier que la génération et le déploiement ont réussi.
Pour vérifier que la nouvelle base de données a été créée, ouvrez SQL Server Explorateur d'objets et recherchez le nom du projet dans le serveur de base de données local approprié (dans ce cas (localdb)\ProjectsV13).
Pour voir que les tables sont remplies avec des données, cliquez avec le bouton droit sur une table, puis sélectionnez Afficher les données.
Une vue modifiable des données de table s’affiche. Par exemple, si vous sélectionnez Tables>dbo.course>Afficher les données, vous voyez une table avec trois colonnes (Cours, Titre et Crédits) et quatre lignes.
Ressources supplémentaires
Pour obtenir un exemple d’introduction au développement Code First, consultez Prise en main avec ASP.NET MVC 5. Pour obtenir un exemple plus avancé, consultez Création d’un modèle de données Entity Framework pour une application MVC 4 ASP.NET.
Pour obtenir des conseils sur la sélection de l’approche Entity Framework à utiliser, consultez Approches de développement Entity Framework.
Étapes suivantes
Dans ce tutoriel, vous allez :
- Configurer la base de données
Passez au tutoriel suivant pour découvrir comment créer l’application web et les modèles de données.