Référence - Console du Gestionnaire de Package dans Visual Studio des outils Entity Framework CoreEntity Framework Core tools reference - Package Manager Console in Visual Studio

Les outils de la Console de gestionnaire de Package (PMC) pour Entity Framework Core effectuer des tâches de développement au moment du design.The Package Manager Console (PMC) tools for Entity Framework Core perform design-time development tasks. Par exemple, ils créent migrations, appliquer des migrations et générer du code pour un modèle basé sur une base de données existante.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Les commandes s’exécutent à l’intérieur de Visual Studio en utilisant le Console du Gestionnaire de Package.The commands run inside of Visual Studio using the Package Manager Console. Ces outils fonctionnent avec les projets .NET Framework et .NET Core.These tools work with both .NET Framework and .NET Core projects.

Si vous n’utilisez pas Visual Studio, nous vous recommandons du outils de ligne de commande de EF Core à la place.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. Les outils CLI sont multiplateformes et d’exécution à l’intérieur d’une invite de commandes.The CLI tools are cross-platform and run inside a command prompt.

Installation des outilsInstalling the tools

Les procédures d’installation et de la mise à jour les outils diffèrent entre ASP.NET Core 2.1 + et les versions antérieures ou autres types de projets.The procedures for installing and updating the tools differ between ASP.NET Core 2.1+ and earlier versions or other project types.

ASP.NET Core 2.1 et versions ultérieuresASP.NET Core version 2.1 and later

Les outils sont automatiquement inclus dans un projet ASP.NET Core 2.1 +, car le Microsoft.EntityFrameworkCore.Tools package est inclus dans le Microsoft.AspNetCore.App métapackage.The tools are automatically included in an ASP.NET Core 2.1+ project because the Microsoft.EntityFrameworkCore.Tools package is included in the Microsoft.AspNetCore.App metapackage.

Par conséquent, vous n’avez rien à faire pour installer les outils, mais vous avez à :Therefore, you don't have to do anything to install the tools, but you do have to:

  • Restaurer les packages avant d’utiliser les outils dans un nouveau projet.Restore packages before using the tools in a new project.
  • Installer un package pour mettre à jour les outils vers une version plus récente.Install a package to update the tools to a newer version.

Pour vous assurer que vous obtenez la dernière version des outils, nous vous recommandons d’également effectuer l’étape suivante :To make sure that you're getting the latest version of the tools, we recommend that you also do the following step:

  • Modifier votre .csproj fichier, puis ajoutez une ligne spécifiant la dernière version de la Microsoft.EntityFrameworkCore.Tools package.Edit your .csproj file and add a line specifying the latest version of the Microsoft.EntityFrameworkCore.Tools package. Par exemple, le .csproj fichier peut inclure un ItemGroup qui ressemble à ceci :For example, the .csproj file might include an ItemGroup that looks like this:

    <ItemGroup>
      <PackageReference Include="Microsoft.AspNetCore.App" />
      <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="2.1.3" />
      <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="2.1.1" />
    </ItemGroup>
    

Mettre à jour les outils lorsque vous recevez un message similaire à l’exemple suivant :Update the tools when you get a message like the following example:

La version des outils EF Core « 2.1.1-rtm-30846 » est antérieure à celle du runtime « 2.1.3-rtm-32065 ».The EF Core tools version '2.1.1-rtm-30846' is older than that of the runtime '2.1.3-rtm-32065'. Mettre à jour les outils pour les dernières fonctionnalités et correctifs de bogues.Update the tools for the latest features and bug fixes.

Pour mettre à jour les outils :To update the tools:

  • Installez la dernière version du .NET Core SDK.Install the latest .NET Core SDK.
  • Mettre à jour de Visual Studio vers la dernière version.Update Visual Studio to the latest version.
  • Modifier le .csproj fichier afin qu’il inclue une référence de package pour le dernier package d’outils, comme indiqué précédemment.Edit the .csproj file so that it includes a package reference to the latest tools package, as shown earlier.

Autres versions et les types de projetsOther versions and project types

Installer les outils de la Console du Gestionnaire de Package en exécutant la commande suivante Console du Gestionnaire de Package:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Mettre à jour les outils en exécutant la commande suivante dans Console du Gestionnaire de Package.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Vérifier l’installationVerify the installation

Vérifiez que les outils sont installés en exécutant cette commande :Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

La sortie ressemble à ceci (il n’indique pas quelle version des outils que vous utilisez) :The output looks like this (it doesn't tell you which version of the tools you're using):


                     _/\__
               ---==/    \\
         ___  ___   |.    \|\
        | __|| __|  |  )   \\\
        | _| | _|   \_/ |  //|\\
        |___||_|       /   \\\/\\

TOPIC
    about_EntityFrameworkCore

SHORT DESCRIPTION
    Provides information about the Entity Framework Core Package Manager Console Tools.

<A list of available commands follows, omitted here.>

L’utilisation des outilsUsing the tools

Avant d’utiliser les outils :Before using the tools:

  • Comprendre la différence entre le projet de démarrage et cible.Understand the difference between target and startup project.
  • Découvrez comment utiliser les outils avec des bibliothèques de classes .NET Standard.Learn how to use the tools with .NET Standard class libraries.
  • Pour les projets ASP.NET Core, définissez l’environnement.For ASP.NET Core projects, set the environment.

Projet de démarrage et cibleTarget and startup project

Les commandes font référence à un projet et un projet de démarrage.The commands refer to a project and a startup project.

  • Le projet est également connu sous le projet cible , car il est où les commandes ajoutent ou supprimer des fichiers.The project is also known as the target project because it's where the commands add or remove files. Par défaut, le projet par défaut sélectionné dans Console du Gestionnaire de Package est le projet cible.By default, the Default project selected in Package Manager Console is the target project. Vous pouvez spécifier un autre projet comme projet cible à l’aide de la --project option.You can specify a different project as target project by using the --project option.

  • Le projet de démarrage est celui que les outils de générer et exécuter.The startup project is the one that the tools build and run. Les outils ont exécuter du code de l’application au moment du design pour obtenir des informations sur le projet, telles que la chaîne de connexion de base de données et la configuration du modèle.The tools have to execute application code at design time to get information about the project, such as the database connection string and the configuration of the model. Par défaut, le projet de démarrage dans l’Explorateur de solutions est le projet de démarrage.By default, the Startup Project in Solution Explorer is the startup project. Vous pouvez spécifier un autre projet comme projet de démarrage à l’aide de la --startup-project option.You can specify a different project as startup project by using the --startup-project option.

Le projet de démarrage et le projet cible sont souvent le même projet.The startup project and target project are often the same project. Un scénario classique dans lequel ils sont des projets distincts est cas suivants :A typical scenario where they are separate projects is when:

  • Les classes d’entité et de contexte EF Core sont dans une bibliothèque de classes .NET Core.The EF Core context and entity classes are in a .NET Core class library.
  • Une application console .NET Core ou une application web fait référence à la bibliothèque de classes.A .NET Core console app or web app references the class library.

Il est également possible de mettre le code de migrations dans une bibliothèque de classes distincte à partir du contexte EF Core.It's also possible to put migrations code in a class library separate from the EF Core context.

Autres frameworks ciblesOther target frameworks

Les outils de la Console du Gestionnaire de Package fonctionnent avec des projets .NET Core ou .NET Framework.The Package Manager Console tools work with .NET Core or .NET Framework projects. Les applications qui ont le modèle EF Core dans une bibliothèque de classes .NET Standard peut-être pas un projet de .NET Framework ou le .NET Core.Apps that have the EF Core model in a .NET Standard class library might not have a .NET Core or .NET Framework project. Par exemple, cela est vrai pour les applications Xamarin et de la plateforme Windows universelle.For example, this is true of Xamarin and Universal Windows Platform apps. Dans ce cas, vous pouvez créer un projet d’application console .NET Core ou .NET Framework dont le seul but est d’agir en tant que projet de démarrage pour les outils.In such cases, you can create a .NET Core or .NET Framework console app project whose only purpose is to act as startup project for the tools. Le projet peut être un projet factice sans code réel — il est uniquement nécessaire pour fournir une cible pour les outils.The project can be a dummy project with no real code — it is only needed to provide a target for the tooling.

Pourquoi est-un projet factice requis ?Why is a dummy project required? Comme mentionné précédemment, les outils ont exécuter du code de l’application au moment du design.As mentioned earlier, the tools have to execute application code at design time. Pour ce faire, ils doivent utiliser le runtime .NET Core ou .NET Framework.To do that, they need to use the .NET Core or .NET Framework runtime. Lorsque le modèle EF Core est dans un projet qui cible .NET Core ou .NET Framework, les outils EF Core emprunt le runtime à partir du projet.When the EF Core model is in a project that targets .NET Core or .NET Framework, the EF Core tools borrow the runtime from the project. Ils ne le sauront pas si le modèle EF Core se trouve dans une bibliothèque de classes .NET Standard.They can't do that if the EF Core model is in a .NET Standard class library. .NET Standard n’est pas une implémentation réelle de .NET ; Il est une spécification d’un ensemble d’API implémentations .NET doivent prendre en charge.The .NET Standard is not an actual .NET implementation; it's a specification of a set of APIs that .NET implementations must support. Par conséquent, .NET Standard n’est pas suffisant pour les outils EF Core exécuter du code d’application.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Le projet factice que vous créez à utiliser en tant que projet de démarrage fournit une plateforme cible concrète dans lequel les outils peuvent charger la bibliothèque de classes .NET Standard.The dummy project you create to use as startup project provides a concrete target platform into which the tools can load the .NET Standard class library.

Environnement ASP.NET CoreASP.NET Core environment

Pour spécifier l’environnement pour les projets ASP.NET Core, définissez env:ASPNETCORE_ENVIRONMENT avant d’exécuter des commandes.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Paramètres communsCommon parameters

Le tableau suivant présente les paramètres qui sont communes à toutes les commandes EF Core :The following table shows parameters that are common to all of the EF Core commands:

ParamètreParameter DescriptionDescription
-Context <chaîne >-Context <String> Le DbContext classe à utiliser.The DbContext class to use. Nom de classe complet avec des espaces de noms ou uniquement.Class name only or fully qualified with namespaces. Si ce paramètre est omis, EF Core recherche la classe de contexte.If this parameter is omitted, EF Core finds the context class. S’il existe plusieurs classes de contexte, ce paramètre est obligatoire.If there are multiple context classes, this parameter is required.
-Project <chaîne >-Project <String> Le projet cible.The target project. Si ce paramètre est omis, le projet par défaut pour Console du Gestionnaire de Package est utilisé en tant que le projet cible.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
-StartupProject <chaîne >-StartupProject <String> Le projet de démarrage.The startup project. Si ce paramètre est omis, le projet de démarrage dans propriétés de la Solution est utilisé en tant que le projet cible.If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Verbose-Verbose Afficher la sortie détaillée.Show verbose output.

Pour afficher les informations d’aide sur une commande, utilisez PowerShell Get-Help commande.To show help information about a command, use PowerShell's Get-Help command.

Conseil

Les paramètres de contexte, le projet et StartupProject prend en charge d’extension de l’onglet.The Context, Project, and StartupProject parameters support tab-expansion.

Add-MigrationAdd-Migration

Ajoute une nouvelle migration.Adds a new migration.

Paramètres :Parameters:

ParamètreParameter DescriptionDescription
-Name <chaîne >-Name <String> Le nom de la migration.The name of the migration. Ceci est un paramètre positionnel et est nécessaire.This is a positional parameter and is required.
-OutputDir <chaîne >-OutputDir <String> Le répertoire (et espace de noms secondaire) à utiliser.The directory (and sub-namespace) to use. Chemins d’accès sont relatifs au répertoire de projet cible.Paths are relative to the target project directory. La valeur par défaut est « Migrations ».Defaults to "Migrations".

DROP DatabaseDrop-Database

Supprime la base de données.Drops the database.

Paramètres :Parameters:

ParamètreParameter DescriptionDescription
-WhatIf-WhatIf Afficher la base de données serait supprimée, mais ne la supprimez.Show which database would be dropped, but don't drop it.

Get-DbContextGet-DbContext

Listes disponibles DbContext types.Lists available DbContext types.

Remove-MigrationRemove-Migration

Supprime la dernière migration (annule les modifications de code qui ont été effectuées pour la migration).Removes the last migration (rolls back the code changes that were done for the migration).

Paramètres :Parameters:

ParamètreParameter DescriptionDescription
-Force-Force Rétablir la migration (annuler les modifications qui ont été appliquées à la base de données).Revert the migration (roll back the changes that were applied to the database).

Scaffold-DbContextScaffold-DbContext

Génère du code pour un DbContext et types d’entité pour une base de données.Generates code for a DbContext and entity types for a database. Dans l’ordre pour Scaffold-DbContext pour générer un type d’entité, la table de base de données doit avoir une clé primaire.In order for Scaffold-DbContext to generate an entity type, the database table must have a primary key.

Paramètres :Parameters:

ParamètreParameter DescriptionDescription
-Connection <chaîne >-Connection <String> La chaîne de connexion à la base de données.The connection string to the database. Pour les projets ASP.NET Core 2.x, la valeur peut être nom =<nom de chaîne de connexion >.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. Dans ce cas, le nom est fourni à partir des sources de configuration qui sont configurées pour le projet.In that case the name comes from the configuration sources that are set up for the project. Ceci est un paramètre positionnel et est nécessaire.This is a positional parameter and is required.
-Provider <chaîne >-Provider <String> Le fournisseur à utiliser.The provider to use. En général, c’est le nom du package NuGet, par exemple : Microsoft.EntityFrameworkCore.SqlServer.Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer. Ceci est un paramètre positionnel et est nécessaire.This is a positional parameter and is required.
-OutputDir <chaîne >-OutputDir <String> Répertoire à placer les fichiers dans.The directory to put files in. Chemins d’accès sont relatif au répertoire de projet.Paths are relative to the project directory.
-ContextDir <chaîne >-ContextDir <String> Le répertoire de placer le DbContext de fichiers dans.The directory to put the DbContext file in. Chemins d’accès sont relatif au répertoire de projet.Paths are relative to the project directory.
-Context <chaîne >-Context <String> Le nom de la DbContext classe à générer.The name of the DbContext class to generate.
-Schemas <String [] >-Schemas <String[]> Les schémas des tables pour générer des types d’entité.The schemas of tables to generate entity types for. Si ce paramètre est omis, tous les schémas sont inclus.If this parameter is omitted, all schemas are included.
-Tables <String [] >-Tables <String[]> Les tables pour générer des types d’entité.The tables to generate entity types for. Si ce paramètre est omis, toutes les tables sont inclus.If this parameter is omitted, all tables are included.
-DataAnnotations-DataAnnotations Utilisez des attributs pour configurer le modèle (le cas échéant).Use attributes to configure the model (where possible). Si ce paramètre est omis, uniquement l’API fluent est utilisé.If this parameter is omitted, only the fluent API is used.
-UseDatabaseNames-UseDatabaseNames Utiliser des noms de table et colonne exactement telles qu’elles apparaissent dans la base de données.Use table and column names exactly as they appear in the database. Si ce paramètre est omis, les noms de base de données sont modifiés pour mieux se conformer aux conventions de style de nom C#.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Remplacer les fichiers existants.Overwrite existing files.

Exemple :Example:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models

Exemple de structure que les tables sélectionnées et crée le contexte dans un dossier distinct avec un nom spécifié :Example that scaffolds only selected tables and creates the context in a separate folder with a specified name:

Scaffold-DbContext "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models -Tables "Blog","Post" -ContextDir Context -Context BlogContext

Migration de scriptScript-Migration

Génère un script SQL qui s’applique toutes les modifications à partir d’une migration sélectionnée à une autre migration sélectionnée.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Paramètres :Parameters:

ParamètreParameter DescriptionDescription
-From <chaîne >-From <String> La migration de départ.The starting migration. Migrations peuvent être identifiées par nom ou par ID.Migrations may be identified by name or by ID. La valeur 0 est un cas spécial signifie avant la première migration.The number 0 is a special case that means before the first migration. La valeur par défaut est 0.Defaults to 0.
- <Chaîne >-To <String> La migration de fin.The ending migration. Valeur par défaut est la dernière migration.Defaults to the last migration.
-Idempotent-Idempotent Générer un script qui peut être utilisé sur toute migration d’une base de données.Generate a script that can be used on a database at any migration.
-Output <chaîne >-Output <String> Fichier dans lequel écrire le résultat.The file to write the result to. Si ce paramètre est omis, le fichier est créé avec un nom généré dans le même dossier que les fichiers exécutables de l’application sont créés, par exemple : /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.IF this parameter is omitted, the file is created with a generated name in the same folder as the app's runtime files are created, for example: /obj/Debug/netcoreapp2.1/ghbkztfz.sql/.

Conseil

To, From, et les paramètres de sortie prend en charge d’extension de l’onglet.The To, From, and Output parameters support tab-expansion.

L’exemple suivant crée un script pour la migration InitialCreate, en utilisant le nom de la migration.The following example creates a script for the InitialCreate migration, using the migration name.

Script-Migration -To InitialCreate

L’exemple suivant crée un script pour toutes les migrations après la migration InitialCreate, à l’aide de l’ID de la migration.The following example creates a script for all migrations after the InitialCreate migration, using the migration ID.

Script-Migration -From 20180904195021_InitialCreate

Mise à jour la base de donnéesUpdate-Database

Met à jour la base de données pour la dernière migration ou pour une migration spécifiée.Updates the database to the last migration or to a specified migration.

ParamètreParameter DescriptionDescription
-Migration <chaîne >-Migration <String> La migration de la cible.The target migration. Migrations peuvent être identifiées par nom ou par ID.Migrations may be identified by name or by ID. La valeur 0 est un cas spécial signifie avant la première migration et oblige toutes les migrations à rétablir.The number 0 is a special case that means before the first migration and causes all migrations to be reverted. Si aucune migration n’est spécifiée, la commande par défaut est la dernière migration.If no migration is specified, the command defaults to the last migration.

Conseil

Le paramètre de Migration prend en charge d’extension de l’onglet.The Migration parameter supports tab-expansion.

L’exemple suivant rétablit toutes les migrations.The following example reverts all migrations.

Update-Database -Migration 0

Les exemples suivants mettre à jour la base de données pour une migration spécifiée.The following examples update the database to a specified migration. La première utilise le nom de la migration et la seconde utilise l’ID de la migration :The first uses the migration name and the second uses the migration ID:

Update-Database -Migration InitialCreate
Update-Database -Migration 20180904195021_InitialCreate

Ressources supplémentairesAdditional resources