Bien démarrer avec EF Core sur ASP.NET Core avec une nouvelle base de donnéesGetting Started with EF Core on ASP.NET Core with a New database

Dans cette procédure pas à pas, vous allez générer une application ASP.NET Core MVC exécutant l’accès aux données de base à l’aide d’Entity Framework Core.In this walkthrough, you will build an ASP.NET Core MVC application that performs basic data access using Entity Framework Core. Vous allez utiliser des migrations pour créer la base de données à partir de votre modèle EF Core.You will use migrations to create the database from your EF Core model. Consultez Ressources supplémentaires pour accéder aux autres didacticiels sur Entity Framework Core.See Additional Resources for more Entity Framework Core tutorials.

Ce didacticiel requiert :This tutorial requires:

Conseil

Vous pouvez afficher cet exemple sur GitHub.You can view this article's sample on GitHub.

Créer un projet dans Visual Studio 2017Create a new project in Visual Studio 2017

  • Fichier > Nouveau > ProjetFile > New > Project
  • Dans le menu de gauche, sélectionnez Installé > Modèles > Visual C# > .NET Core.From the left menu select Installed > Templates > Visual C# > .NET Core.
  • Sélectionnez Nouvelle application web ASP.NET Core.Select ASP.NET Core Web Application.
  • Entrez le nom EFGetStarted.AspNetCore.NewDb et cliquez sur OK.Enter EFGetStarted.AspNetCore.NewDb for the name and click OK.
  • Dans la boîte de dialogue Nouvelle application web ASP.NET Core :In the New ASP.NET Core Web Application dialog:
    • Vérifiez que les options .NET Core et ASP.NET Core 2.0 sont sélectionnées dans les listes déroulantes.Ensure the options .NET Core and ASP.NET Core 2.0 are selected in the drop down lists
    • Sélectionnez le modèle de projet Application web (Model-View-Controller).Select the Web Application (Model-View-Controller) project template
    • Vérifiez que le paramètre Authentification est défini sur Aucune authentification.Ensure that Authentication is set to No Authentication
    • Cliquez sur OK.Click OK

Avertissement: si vous définissez le paramètre Authentification sur Comptes d’utilisateur individuels au lieu de Aucune, un modèle Entity Framework Core sera ajouté à votre projet dans Models\IdentityModel.cs.Warning: If you use Individual User Accounts instead of None for Authentication then an Entity Framework Core model will be added to your project in Models\IdentityModel.cs. À l’aide des techniques que vous allez découvrir dans cette procédure pas à pas, vous pouvez ajouter un second modèle ou étendre ce modèle existant pour qu’il puisse contenir vos classes d’entité.Using the techniques you will learn in this walkthrough, you can choose to add a second model, or extend this existing model to contain your entity classes.

Installer Entity Framework CoreInstall Entity Framework Core

Installez le package pour le ou les fournisseurs de bases de données EF Core à cibler.Install the package for the EF Core database provider(s) you want to target. Cette procédure pas à pas utilise SQL Server.This walkthrough uses SQL Server. Pour obtenir la liste des fournisseurs disponibles, consultez Fournisseurs de bases de données.For a list of available providers see Database Providers.

  • Outils > Gestionnaire de package NuGet > Console du Gestionnaire de packageTools > NuGet Package Manager > Package Manager Console

  • Exécutez Install-Package Microsoft.EntityFrameworkCore.SqlServer.Run Install-Package Microsoft.EntityFrameworkCore.SqlServer

Nous utiliserons des outils Entity Framework Core pour créer une base de données à partir de votre modèle EF Core.We will be using some Entity Framework Core Tools to create a database from your EF Core model. Nous installerons donc également le package d’outils :So we will install the tools package as well:

  • Exécutez Install-Package Microsoft.EntityFrameworkCore.Tools.Run Install-Package Microsoft.EntityFrameworkCore.Tools

Nous utiliserons des outils de génération de modèles automatique ASP.NET Core pour créer par la suite des contrôleurs et des vues.We will be using some ASP.NET Core Scaffolding tools to create controllers and views later on. Nous installerons donc également ce package de conception :So we will install this design package as well:

  • Exécutez Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design.Run Install-Package Microsoft.VisualStudio.Web.CodeGeneration.Design

Créer le modèleCreate the model

Définissez le contexte et les classes d’entité qui composeront le modèle :Define a context and entity classes that make up the model:

  • Cliquez avec le bouton de droite sur le dossier Modèles et sélectionnez Ajouter > Classe.Right-click on the Models folder and select Add > Class.

  • Entrez le nom Model.cs et cliquez sur OK.Enter Model.cs as the name and click OK.

  • Remplacez le contenu du fichier par le code suivant :Replace the contents of the file with the following code:

    using Microsoft.EntityFrameworkCore;
    using System.Collections.Generic;
    
    namespace EFGetStarted.AspNetCore.NewDb.Models
    {
        public class BloggingContext : DbContext
        {
            public BloggingContext(DbContextOptions<BloggingContext> options)
                : base(options)
            { }
    
            public DbSet<Blog> Blogs { get; set; }
            public DbSet<Post> Posts { get; set; }
        }
    
        public class Blog
        {
            public int BlogId { get; set; }
            public string Url { get; set; }
    
            public List<Post> Posts { get; set; }
        }
    
        public class Post
        {
            public int PostId { get; set; }
            public string Title { get; set; }
            public string Content { get; set; }
    
            public int BlogId { get; set; }
            public Blog Blog { get; set; }
        }
    }
    

Remarque : dans une application réelle, vous placeriez généralement chaque classe de votre modèle dans un fichier distinct.Note: In a real app you would typically put each class from your model in a separate file. Dans le cadre de ce didacticiel, par souci de simplicité, nous plaçons toutes les classes dans un même fichier.For the sake of simplicity, we are putting all the classes in one file for this tutorial.

Inscrire le contexte avec l’injection de dépendancesRegister your context with dependency injection

Des services (tels que BloggingContext) sont inscrits avec l’injection de dépendances au démarrage de l’application.Services (such as BloggingContext) are registered with dependency injection during application startup. Ces services sont affectés aux composants qui les nécessitent (par exemple, vos contrôleurs MVC) par le biais des propriétés ou paramètres du constructeur.Components that require these services (such as your MVC controllers) are then provided these services via constructor parameters or properties.

Afin de permettre à nos contrôleurs MVC d’utiliser BloggingContext, nous allons inscrire ce dernier en tant que service.In order for our MVC controllers to make use of BloggingContext we will register it as a service.

  • Ouvrez Startup.cs.Open Startup.cs

  • Ajoutez les instructions using suivantes :Add the following using statements:

    using EFGetStarted.AspNetCore.NewDb.Models;
    using Microsoft.EntityFrameworkCore;
    

Ajoutez la méthode AddDbContext pour l’inscrire en tant que service :Add the AddDbContext method to register it as a service:

  • Ajoutez le code suivant à la méthode ConfigureServices :Add the following code to the ConfigureServices method:

    // This method gets called by the runtime. Use this method to add services to the container.
    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc();
    
        var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;ConnectRetryCount=0";
        services.AddDbContext<BloggingContext>(options => options.UseSqlServer(connection));
    }
    

Remarque : une application réelle placerait généralement la chaîne de connexion dans un fichier de configuration.Note: A real app would generally put the connection string in a configuration file. Par souci de simplicité, nous allons la définir dans le code.For the sake of simplicity, we are defining it in code. Pour plus d’informations, consultez Chaînes de connexion.See Connection Strings for more information.

Créer la base de donnéesCreate your database

Une fois que vous avez un modèle, vous pouvez utiliser des migrations pour créer une base de données.Once you have a model, you can use migrations to create a database.

  • Ouvrez la console du Gestionnaire de package (PMC) :Open the PMC:

    Outils –> Gestionnaire de package NuGet –> Console du Gestionnaire de packageTools –> NuGet Package Manager –> Package Manager Console

  • Exécutez Add-Migration InitialCreate pour générer automatiquement un modèle de migration pour créer l’ensemble initial de tables de votre modèle.Run Add-Migration InitialCreate to scaffold a migration to create the initial set of tables for your model. Si vous recevez l’erreur The term 'add-migration' is not recognized as the name of a cmdlet, fermez et rouvrez Visual Studio.If you receive an error stating The term 'add-migration' is not recognized as the name of a cmdlet, close and reopen Visual Studio.

  • Exécutez Update-Database pour appliquer la nouvelle migration à la base de données.Run Update-Database to apply the new migration to the database. Cette commande crée la base de données avant d’appliquer des migrations.This command creates the database before applying migrations.

Créer un contrôleurCreate a controller

Activez la génération de modèles automatique dans le projet :Enable scaffolding in the project:

  • Dans l’Explorateur de solutions, cliquez avec le bouton de droite sur le dossier Contrôleurs et sélectionnez Ajouter > Contrôleur.Right-click on the Controllers folder in Solution Explorer and select Add > Controller.
  • Sélectionnez Dépendances minimales et cliquez sur Ajouter.Select Minimal Dependencies and click Add.
  • Vous pouvez ignorer ou supprimer le fichier ScaffoldingReadMe.txt.You can ignore or delete the ScaffoldingReadMe.txt file.

Une fois activée la génération de modèles automatique, nous pouvons générer automatiquement un modèle de contrôleur pour l’entité Blog.Now that scaffolding is enabled, we can scaffold a controller for the Blog entity.

  • Dans l’Explorateur de solutions, cliquez avec le bouton de droite sur le dossier Contrôleurs et sélectionnez Ajouter > Contrôleur.Right-click on the Controllers folder in Solution Explorer and select Add > Controller.
  • Sélectionnez Contrôleur MVC avec vues, utilisant Entity Framework et cliquez sur OK.Select MVC Controller with views, using Entity Framework and click Ok.
  • Définissez les paramètres Classe de modèle sur Blog et Classe de contexte de données sur BloggingContext.Set Model class to Blog and Data context class to BloggingContext.
  • Cliquez sur Ajouter.Click Add.

Exécuter l'applicationRun the application

Appuyez sur la touche F5 pour exécuter et tester l’application.Press F5 to run and test the app.

  • Accédez à /Blogs.Navigate to /Blogs
  • Utilisez le lien de création pour créer des entrées de blog.Use the create link to create some blog entries. Testez les liens de détails et de suppression.Test the details and delete links.

image

image

Ressources supplémentairesAdditional Resources