Référence des outils Entity Framework Core - interface CLI .NETEntity Framework Core tools reference - .NET CLI

Les outils de l’interface de ligne de commande (CLI) pour Entity Framework Core effectuer des tâches de développement au moment du design.The command-line interface (CLI) 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 sont une extension multiplateforme dotnet commande, qui fait partie de la du SDK .NET Core.The commands are an extension to the cross-platform dotnet command, which is part of the .NET Core SDK. Ces outils fonctionnent avec les projets .NET Core.These tools work with .NET Core projects.

Si vous utilisez Visual Studio, nous vous recommandons du outils de la Console du Gestionnaire de Package à la place :If you're using Visual Studio, we recommend the Package Manager Console tools instead:

  • Elles fonctionnent automatiquement avec le projet sélectionné dans le Console du Gestionnaire de Package sans nécessiter de basculer manuellement les répertoires.They automatically work with the current project selected in the Package Manager Console without requiring that you manually switch directories.
  • Elles ouvrent automatiquement les fichiers générés par une commande une fois la commande est terminée.They automatically open files generated by a command after the command is completed.

Installation des outilsInstalling the tools

La procédure d’installation dépend de la version et le type de projet :The installation procedure depends on project type and version:

  • ASP.NET Core 2.1 et versions ultérieuresASP.NET Core version 2.1 and later
  • EF Core 2.xEF Core 2.x
  • EF Core 1.xEF Core 1.x

ASP.NET Core 2.1 +ASP.NET Core 2.1+

  • Installer actuel du SDK .NET Core.Install the current .NET Core SDK. Le kit SDK doit être installé même si vous disposez de la dernière version de Visual Studio 2017.The SDK has to be installed even if you have the latest version of Visual Studio 2017.

    C’est tout ce qui est nécessaire pour ASP.NET Core 2.1 +, car le Microsoft.EntityFrameworkCore.Design package est inclus dans le Microsoft.AspNetCore.App métapackage.This is all that is needed for ASP.NET Core 2.1+ because the Microsoft.EntityFrameworkCore.Design package is included in the Microsoft.AspNetCore.App metapackage.

EF Core 2.x (pas ASP.NET Core)EF Core 2.x (not ASP.NET Core)

Le dotnet ef commandes sont inclus dans le SDK .NET Core, mais pour activer les commandes, vous devez installer le Microsoft.EntityFrameworkCore.Design package.The dotnet ef commands are included in the .NET Core SDK, but to enable the commands you have to install the Microsoft.EntityFrameworkCore.Design package.

  • Installer actuel du SDK .NET Core.Install the current .NET Core SDK. Le kit SDK doit être installé même si vous disposez de la dernière version de Visual Studio 2017.The SDK has to be installed even if you have the latest version of Visual Studio 2017.

  • Installer la dernière stable Microsoft.EntityFrameworkCore.Design package.Install the latest stable Microsoft.EntityFrameworkCore.Design package.

    dotnet add package Microsoft.EntityFrameworkCore.Design
    

EF Core 1.xEF Core 1.x

  • Installer le SDK .NET Core version 2.1.200.Install the .NET Core SDK version 2.1.200. Versions ultérieures ne sont pas compatibles avec les outils CLI pour EF Core 1.0 et 1.1.Later versions are not compatible with CLI tools for EF Core 1.0 and 1.1.

  • Configurer l’application pour utiliser le 2.1.200 SDK version en modifiant son global.json fichier.Configure the application to use the 2.1.200 SDK version by modifying its global.json file. Ce fichier est normalement inclus dans le répertoire de solution (une au-dessus du projet).This file is normally included in the solution directory (one above the project).

  • Modifiez le fichier projet et ajoutez Microsoft.EntityFrameworkCore.Tools.DotNet comme un DotNetCliToolReference élément.Edit the project file and add Microsoft.EntityFrameworkCore.Tools.DotNet as a DotNetCliToolReference item. Spécifier la dernière version 1.x, par exemple : 1.1.6.Specify the latest 1.x version, for example: 1.1.6. Consultez l’exemple de fichier de projet à la fin de cette section.See the project file example at the end of this section.

  • Installez la dernière version 1.x de le Microsoft.EntityFrameworkCore.Design du package, par exemple :Install the latest 1.x version of the Microsoft.EntityFrameworkCore.Design package, for example:

    dotnet add package Microsoft.EntityFrameworkCore.Design -v 1.1.6
    

    Avec les deux références de package ajoutés, le fichier projet ressemble à ceci :With both package references added, the project file looks something like this:

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>Exe</OutputType>
        <TargetFramework>netcoreapp1.1</TargetFramework>
      </PropertyGroup>
      <ItemGroup>
        <PackageReference Include="Microsoft.EntityFrameworkCore.Design"
                          Version="1.1.6"
                           PrivateAssets="All" />
      </ItemGroup>
      <ItemGroup>
         <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
                                Version="1.1.6" />
      </ItemGroup>
    </Project>
    

    Une référence de package avec PrivateAssets="All" n’est pas exposé à des projets qui font référence à ce projet.A package reference with PrivateAssets="All" isn't exposed to projects that reference this project. Cette restriction est particulièrement utile pour les packages qui sont utilisés en général uniquement pendant le développement.This restriction is especially useful for packages that are typically only used during development.

Vérifier l’installationVerify installation

Exécutez les commandes suivantes pour vérifier que les outils CLI EF Core sont correctement installés :Run the following commands to verify that EF Core CLI tools are correctly installed:

dotnet restore
dotnet ef

La sortie de la commande identifie la version des outils en cours d’utilisation :The output from the command identifies the version of the tools in use:


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

Entity Framework Core .NET Command-line Tools 2.1.3-rtm-32065

<Usage documentation follows, not shown.>

L’utilisation des outilsUsing the tools

Avant d’utiliser les outils, vous devrez peut-être créer un projet de démarrage ou de définir l’environnement.Before using the tools, you might have to create a startup project or set the environment.

Projet cible et le projet de démarrageTarget project 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 dans le répertoire actif est le projet cible.By default, the project in the current directory 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 dans le répertoire actif est le projet de démarrage.By default, the project in the current directory 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 CLI fonctionnent avec les projets .NET Core et .NET Framework.The CLI tools work with .NET Core projects and .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 dont seul but est d’agir en tant que projet de démarrage pour les outils.In such cases, you can create a .NET Core 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.To do that, they need to use the .NET Core 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 le ASPNETCORE_ENVIRONMENT variable d’environnement avant d’exécuter des commandes.To specify the environment for ASP.NET Core projects, set the ASPNETCORE_ENVIRONMENT environment variable before running commands.

Options courantesCommon options

OptionOption DescriptionDescription
--json Afficher la sortie JSON.Show JSON output.
-c --context <DBCONTEXT> 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 cette option est omise, EF Core trouve la classe de contexte.If this option is omitted, EF Core will find the context class. S’il existe plusieurs classes de contexte, cette option est requise.If there are multiple context classes, this option is required.
-p --project <PROJECT> Chemin d’accès relatif au dossier du projet du projet cible.Relative path to the project folder of the target project. Valeur par défaut est le dossier actif.Default value is the current folder.
-s --startup-project <PROJECT> Chemin d’accès relatif au dossier du projet du projet de démarrage.Relative path to the project folder of the startup project. Valeur par défaut est le dossier actif.Default value is the current folder.
--framework <FRAMEWORK> Le Moniker du Framework cible pour le framework cible.The Target Framework Moniker for the target framework. À utiliser lorsque le fichier projet spécifie plusieurs frameworks cibles, et que vous souhaitez sélectionner un d’eux.Use when the project file specifies multiple target frameworks, and you want to select one of them.
--configuration <CONFIGURATION> La configuration de build, par exemple : Debug ou Release.The build configuration, for example: Debug or Release.
--runtime <IDENTIFIER> L’identificateur du runtime cible à restaurer les packages.The identifier of the target runtime to restore packages for. Pour connaître les identificateurs de runtime, consultez le catalogue des identificateurs de runtime.For a list of Runtime Identifiers (RIDs), see the RID catalog.
-h --help Afficher les informations d’aide.Show help information.
-v --verbose Afficher la sortie détaillée.Show verbose output.
--no-color Ne pas mettre en couleur sortie.Don't colorize output.
--prefix-output Préfixe avec le niveau de sortie.Prefix output with level.

liste de base de données ef dotnetdotnet ef database drop

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

Options :Options:

OptionOption DescriptionDescription
-f --force Ne pas confirmer.Don't confirm.
--dry-run Afficher la base de données serait supprimée, mais ne la supprimez.Show which database would be dropped, but don't drop it.

mise à jour de la base de données DotNet efdotnet ef database update

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.

Arguments :Arguments:

ArgumentArgument DescriptionDescription
<MIGRATION> 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.

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:

dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate

informations de dbcontext ef dotnetdotnet ef dbcontext info

Obtient des informations sur un DbContext type.Gets information about a DbContext type.

liste de dbcontext ef dotnetdotnet ef dbcontext list

Listes disponibles DbContext types.Lists available DbContext types.

structure de dbcontext ef dotnetdotnet ef dbcontext scaffold

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 de cette commande Générer un type d’entité, la table de base de données doit avoir une clé primaire.In order for this command to generate an entity type, the database table must have a primary key.

Arguments :Arguments:

ArgumentArgument DescriptionDescription
<CONNECTION> 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.
<PROVIDER> 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.

Options :Options:

OptionOption DescriptionDescription
-d-d --data-annotations Utilisez des attributs pour configurer le modèle (le cas échéant).Use attributes to configure the model (where possible). Si cette option est omise, uniquement l’API fluent est utilisé.If this option is omitted, only the fluent API is used.
-c --context <NAME> Le nom de la DbContext classe à générer.The name of the DbContext class to generate.
--context-dir <PATH> Le répertoire de placer le DbContext fichier de classe dans.The directory to put the DbContext class file in. Chemins d’accès sont relatif au répertoire de projet.Paths are relative to the project directory. Espaces de noms sont dérivés les noms de dossiers.Namespaces are derived from the folder names.
-f --force Remplacer les fichiers existants.Overwrite existing files.
-o --output-dir <PATH> Répertoire à placer les fichiers de classe d’entité dans.The directory to put entity class files in. Chemins d’accès sont relatif au répertoire de projet.Paths are relative to the project directory.
--schema <SCHEMA_NAME>... Les schémas des tables pour générer des types d’entité.The schemas of tables to generate entity types for. Pour spécifier plusieurs schémas, répétez --schema pour chacun d'entre eux.To specify multiple schemas, repeat --schema for each one. Si cette option est omise, tous les schémas sont inclus.If this option is omitted, all schemas are included.
-t --table <TABLE_NAME>...--table <TABLE_NAME>... Les tables pour générer des types d’entité.The tables to generate entity types for. Pour spécifier plusieurs tables, répétez -t ou --table pour chacun d'entre eux.To specify multiple tables, repeat -t or --table for each one. Si cette option est omise, toutes les tables sont inclus.If this option is omitted, all tables are included.
--use-database-names 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 cette option est omise, les noms de base de données sont modifiés pour mieux se conformer aux conventions de style de nom C#.If this option is omitted, database names are changed to more closely conform to C# name style conventions.

L’exemple suivant structure tous les schémas et les tables et place les nouveaux fichiers dans le modèles dossier.The following example scaffolds all schemas and tables and puts the new files in the Models folder.

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models

L’exemple suivant structure que les tables sélectionnées et crée le contexte dans un dossier distinct avec un nom spécifié :The following example scaffolds only selected tables and creates the context in a separate folder with a specified name:

dotnet ef dbcontext scaffold "Server=(localdb)\mssqllocaldb;Database=Blogging;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -o Models -t Blog -t Post --context-dir Context -c BlogContext

ajouter des migrations d’ef dotnetdotnet ef migrations add

Ajoute une nouvelle migration.Adds a new migration.

Arguments :Arguments:

ArgumentArgument DescriptionDescription
<NAME> Le nom de la migration.The name of the migration.

Options :Options:

OptionOption DescriptionDescription
-o --output-dir <PATH> Le répertoire (et espace de noms secondaire) à utiliser.The directory (and sub-namespace) to use. Chemins d’accès sont relatif au répertoire de projet.Paths are relative to the project directory. La valeur par défaut est « Migrations ».Defaults to "Migrations".

liste de dotnet ef migrationsdotnet ef migrations list

Répertorie les migrations disponibles.Lists available migrations.

supprimer des migrations d’ef dotnetdotnet ef migrations remove

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).

Options :Options:

OptionOption DescriptionDescription
-f --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).

script de dotnet ef migrationsdotnet ef migrations script

Génère un script SQL à partir de migrations.Generates a SQL script from migrations.

Arguments :Arguments:

ArgumentArgument DescriptionDescription
<FROM> 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.
<TO> La migration de fin.The ending migration. Valeur par défaut est la dernière migration.Defaults to the last migration.

Options :Options:

OptionOption DescriptionDescription
-o --output <FILE> Fichier dans lequel écrire le script.The file to write the script to.
-i --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.

L’exemple suivant crée un script pour la migration de InitialCreate :The following example creates a script for the InitialCreate migration:

dotnet ef migrations script 0 InitialCreate

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

dotnet ef migrations script 20180904195021_InitialCreate

Ressources supplémentairesAdditional resources