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 ce tutoriel, vous générez une application ASP.NET Core MVC exécutant l’accès aux données de base à l’aide d’Entity Framework Core.In this tutorial, you build an ASP.NET Core MVC application that performs basic data access using Entity Framework Core. Le tutoriel utilise des migrations pour créer la base de données à partir du modèle de données.The tutorial uses migrations to create the database from the data model.

Vous pouvez suivre le tutoriel à l’aide de Visual Studio 2017 sur Windows, ou à l’aide de l’interface CLI .NET Core sur Windows, macOS ou Linux.You can follow the tutorial by using Visual Studio 2017 on Windows, or by using the .NET Core CLI on Windows, macOS, or Linux.

Affichez l’exemple proposé dans cet article sur GitHub :View this article's sample on GitHub:

PrérequisPrerequisites

Installez les logiciels suivants :Install the following software:

Créer un projetCreate a new project

  • Ouvrez Visual Studio 2017.Open Visual Studio 2017
  • Fichier > Nouveau > ProjetFile > New > Project
  • Dans le menu de gauche, sélectionnez Installé > Visual C# > .NET Core.From the left menu, select Installed > 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.1 sont sélectionnées dans les listes déroulantes.Make sure that .NET Core and ASP.NET Core 2.1 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.Make sure 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é au 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 the project in Models\IdentityModel.cs. À l’aide des techniques présentées dans ce tutoriel, 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 learn in this tutorial, 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

Pour installer EF Core, installez le package pour le ou les fournisseurs de bases de données EF Core à cibler.To install EF Core, you install the package for the EF Core database provider(s) you want to target. Pour obtenir la liste des fournisseurs disponibles, consultez Fournisseurs de bases de données.For a list of available providers, see Database Providers.

Pour ce tutoriel, vous n’êtes pas obligé d’installer un package de fournisseur, car le tutoriel utilise SQL Server.For this tutorial, you don't have to install a provider package because the tutorial uses SQL Server. Le package du fournisseur SQL Server est inclus dans le métapackage Microsoft.AspnetCore.App.The SQL Server provider package is included in the Microsoft.AspnetCore.App metapackage.

Créer le modèleCreate the model

Définissez une classe de contexte et des classes d’entité qui composent le modèle.Define a context class 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 ICollection<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; }
        }
    }
    

Une application de production placerait généralement chaque classe dans un fichier distinct.A production app would typically put each class in a separate file. Par souci de simplicité, ce tutoriel place ces classes dans un même fichier.For the sake of simplicity, this tutorial puts these classes in one file.

Inscrire le contexte avec l’injection de dépendanceRegister the 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 en ont besoin (tels que les contrôleurs MVC) par le biais de propriétés ou de paramètres de constructeur.Components that require these services (such as MVC controllers) are provided these services via constructor parameters or properties.

Pour rendre BloggingContext accessible aux contrôleurs MVC, inscrivez-le en tant que service.To make BloggingContext available to MVC controllers, register it as a service.

  • Dans Startup.cs ajoutez les instructions using suivantes :In Startup.cs add the following using statements:

    using EFGetStarted.AspNetCore.NewDb.Models;
    using Microsoft.EntityFrameworkCore;
    
  • Ajoutez le code en surbrillance suivant à la méthode ConfigureServices :Add the following highlighted code to the ConfigureServices method:

    public void ConfigureServices(IServiceCollection services)
    {
        services.Configure<CookiePolicyOptions>(options =>
        {
            // This lambda determines whether user consent for non-essential cookies is needed for a given request.
            options.CheckConsentNeeded = context => true;
            options.MinimumSameSitePolicy = SameSiteMode.None;
        });
    
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
    
        var connection = @"Server=(localdb)\mssqllocaldb;Database=EFGetStarted.AspNetCore.NewDb;Trusted_Connection=True;ConnectRetryCount=0";
        services.AddDbContext<BloggingContext>
            (options => options.UseSqlServer(connection));
        // BloggingContext requires
        // using EFGetStarted.AspNetCore.NewDb.Models;
        // UseSqlServer requires
        // using Microsoft.EntityFrameworkCore;
    }
    

Une application de production placerait généralement la chaîne de connexion dans un fichier de configuration ou une variable d’environnement.A production app would typically put the connection string in a configuration file or environment variable. Par souci de simplicité, ce tutoriel la définit dans le code.For the sake of simplicity, this tutorial defines 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 the database

Les étapes suivantes utilisent des migrations pour créer une base de données.The following steps use migrations to create a database.

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

  • Exécutez les commandes suivantes :Run the following commands:

    Add-Migration InitialCreate
    Update-Database
    

    Si vous obtenez l’erreur The term 'add-migration' is not recognized as the name of a cmdlet, fermez et rouvrez Visual Studio.If you get an error stating The term 'add-migration' is not recognized as the name of a cmdlet, close and reopen Visual Studio.

    La commande Add-Migration structure une migration afin de créer le jeu initial de tables du modèle.The Add-Migration command scaffolds a migration to create the initial set of tables for the model. La commande Update-Database crée la base de données et lui applique la nouvelle migration.The Update-Database command creates the database and applies the new migration to it.

Créer un contrôleurCreate a controller

Générez automatiquement un contrôleur et des vues pour l’entité Blog.Scaffold a controller and views 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 Ajouter.Select MVC Controller with views, using Entity Framework and click Add.
  • 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.

Le moteur de génération de modèles automatique crée les fichiers suivants :The scaffolding engine creates the following files:

  • Un contrôleur (Controllers/BlogsController.cs)A controller (Controllers/BlogsController.cs)
  • Des vues Razor pour les pages Créer, Supprimer, Détails, Modifier et Index (Views/Movies/*.cshtml)Razor views for Create, Delete, Details, Edit, and Index pages (Views/Movies/*.cshtml)

Exécuter l'applicationRun the application

  • Déboguer > Exécuter sans débogageDebug > Start Without Debugging
  • Accédez à /Blogs.Navigate to /Blogs

  • Utilisez le lien Créer pour créer des entrées de blog.Use the Create New link to create some blog entries.

    Créer une page

  • Testez les liens Détails, Modifier et Supprimer.Test the Details, Edit, and Delete links.

    Page d’index

Ressources supplémentairesAdditional Resources