Referenz zur Entity Framework Core Tools-Paket-Manager-Konsole in Visual StudioEntity Framework Core tools reference - Package Manager Console in Visual Studio

Die Paket-Manager-Konsole (PMC)-Tools für Entity Framework Core die Entwicklungsaufgaben zur Entwurfszeit ausführen.The Package Manager Console (PMC) tools for Entity Framework Core perform design-time development tasks. Beispielsweise erstellen Sie Migrationen, wenden Migrationen an und generieren Code für ein Modell, das auf einer vorhandenen Datenbank basiert.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Die Befehle werden innerhalb von Visual Studio mithilfe der Paket-Manager-Konsoleausgeführt.The commands run inside of Visual Studio using the Package Manager Console. Diese Tools funktionieren sowohl mit .NET Framework- als auch mit .NET Core-Projekten.These tools work with both .NET Framework and .NET Core projects.

Wenn Sie Visual Studio nicht verwenden, empfiehlt es sich, stattdessen die EF Core Befehlszeilen Tools zu verwenden.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. Die .net Core-CLI Tools sind plattformübergreifend und werden innerhalb einer Eingabeaufforderung ausgeführt.The .NET Core CLI tools are cross-platform and run inside a command prompt.

Installieren der ToolsInstalling the tools

Installieren Sie die Paket-Manager-Konsole, indem Sie den folgenden Befehl in der Paket-Manager-Konsole ausführen:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Aktualisieren Sie die Tools, indem Sie den folgenden Befehl in der Paket-Manager-Konsole ausführen.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Überprüfen der InstallationVerify the installation

Stellen Sie sicher, dass die Tools installiert sind, indem Sie folgenden Befehl ausführen:Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

Die Ausgabe sieht wie folgt aus (Sie gibt nicht an, welche Version der Tools Sie verwenden):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.>

Verwenden der ToolsUsing the tools

Vor der Verwendung der Tools:Before using the tools:

  • Verstehen Sie den Unterschied Zwischenziel und Startprojekt.Understand the difference between target and startup project.
  • Erfahren Sie, wie Sie die Tools mit .NET Standard-Klassenbibliotheken verwenden.Learn how to use the tools with .NET Standard class libraries.
  • Legen Sie für ASP.net Core Projekte die Umgebung fest.For ASP.NET Core projects, set the environment.

Ziel-und StartprojektTarget and startup project

Die Befehle verweisen auf ein Projekt und ein Startprojekt.The commands refer to a project and a startup project.

  • Das Projekt wird auch als Ziel Projekt bezeichnet, weil die Befehle Dateien hinzufügen oder entfernen.The project is also known as the target project because it's where the commands add or remove files. Standardmäßig ist das Standard Projekt , das in der Paket-Manager-Konsole ausgewählt ist, das Ziel Projekt.By default, the Default project selected in Package Manager Console is the target project. Sie können ein anderes Projekt als Ziel Projekt angeben, indem Sie die --project Option verwenden.You can specify a different project as target project by using the --project option.

  • Das Startprojekt ist das Startprojekt , das von den Tools erstellt und ausgeführt wird.The startup project is the one that the tools build and run. Die Tools müssen Anwendungscode zur Entwurfszeit ausführen, um Informationen zum Projekt zu erhalten, z. b. die Daten bankverbindungs Zeichenfolge und die Konfiguration des Modells.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. Standardmäßig ist das Startprojekt in Projektmappen-Explorer das Startprojekt.By default, the Startup Project in Solution Explorer is the startup project. Sie können ein anderes Projekt als Startprojekt angeben, indem Sie die --startup-project Option verwenden.You can specify a different project as startup project by using the --startup-project option.

Das Startprojekt und das Ziel Projekt sind häufig das gleiche Projekt.The startup project and target project are often the same project. Ein typisches Szenario, bei dem es sich um separate Projekte handelt, sind folgende:A typical scenario where they are separate projects is when:

  • Die EF Core Kontext-und Entitäts Klassen befinden sich in einer .net Core-Klassenbibliothek.The EF Core context and entity classes are in a .NET Core class library.
  • Eine .net Core-Konsolen-APP oder-Web-App verweist auf die Klassenbibliothek.A .NET Core console app or web app references the class library.

Es ist auch möglich, Migrations Code in einer Klassenbibliothek zu platzieren, getrennt vom EF Core Kontext.It's also possible to put migrations code in a class library separate from the EF Core context.

Andere Ziel-FrameworksOther target frameworks

Die Paket-Manager-Konsolen Tools können mit .net Core-oder .NET Framework-Projekten verwendet werden.The Package Manager Console tools work with .NET Core or .NET Framework projects. Apps, die über das EF Core Modell in einer .NET Standard-Klassenbibliothek verfügen, verfügen möglicherweise nicht über ein .net Core-oder .NET Framework-Projekt.Apps that have the EF Core model in a .NET Standard class library might not have a .NET Core or .NET Framework project. Dies gilt z. b. für xamarin-und universelle Windows-Plattform-apps.For example, this is true of Xamarin and Universal Windows Platform apps. In solchen Fällen können Sie ein .net Core-oder .NET Framework Konsolen-App-Projekt erstellen, dessen einziger Zweck darin besteht, als Startprojekt für die Tools zu fungieren.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. Das Projekt kann ein Dummyprojekt ohne echten Code sein — . es ist nur erforderlich, um ein Ziel für die Tools bereitzustellen.The project can be a dummy project with no real code — it is only needed to provide a target for the tooling.

Warum ist ein Dummyprojekt erforderlich?Why is a dummy project required? Wie bereits erwähnt, müssen die Tools Anwendungscode zur Entwurfszeit ausführen.As mentioned earlier, the tools have to execute application code at design time. Hierzu müssen Sie die .net Core-oder .NET Framework-Laufzeit verwenden.To do that, they need to use the .NET Core or .NET Framework runtime. Wenn sich das EF Core Modell in einem Projekt befindet, das .net Core oder .NET Framework als Ziel hat, wird die Laufzeit von den EF Core Tools aus dem Projekt ausgeliehen.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. Dies ist nicht möglich, wenn sich das EF Core Modell in einer .NET Standard Klassenbibliothek befindet.They can't do that if the EF Core model is in a .NET Standard class library. Der .NET Standard ist keine tatsächliche .NET-Implementierung. Es handelt sich um eine Spezifikation für eine Reihe von APIs, die von .net-Implementierungen unterstützt werden müssen.The .NET Standard is not an actual .NET implementation; it's a specification of a set of APIs that .NET implementations must support. Daher ist .NET Standard für die EF Core Tools nicht ausreichend, um Anwendungscode auszuführen.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Das Dummyprojekt, das Sie als Startprojekt verwenden, stellt eine konkrete Zielplattform bereit, in die die Tools die .NET Standard Klassenbibliothek laden können.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.

ASP.net Core UmgebungASP.NET Core environment

Wenn Sie die Umgebung für ASP.net Core Projekte angeben möchten, legen Sie ENV: ASPNETCORE_ENVIRONMENT vor dem Ausführen von Befehlen fest.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Ab EF Core 5,0 können zusätzliche Argumente auch an "Program. kreatehostbuilder" übergeben werden, sodass Sie die Umgebung in der Befehlszeile angeben können:Starting in EF Core 5.0, additional arguments can also be passed into Program.CreateHostBuilder allowing you to specify the environment on the command-line:

Update-Database -Args '--environment Production'

Allgemeine ParameterCommon parameters

In der folgenden Tabelle sind die Parameter aufgeführt, die für alle EF Core-Befehle gelten:The following table shows parameters that are common to all of the EF Core commands:

ParameterParameter BESCHREIBUNGDescription
-Kontext <String>-Context <String> Die DbContext-Klasse, die verwendet werden soll.The DbContext class to use. Der Klassenname oder voll qualifiziert mit Namespaces.Class name only or fully qualified with namespaces. Wenn dieser Parameter ausgelassen wird, wird EF Core die Kontext Klasse findet.If this parameter is omitted, EF Core finds the context class. Wenn mehrere Kontext Klassen vorhanden sind, ist dieser Parameter erforderlich.If there are multiple context classes, this parameter is required.
-Projekt <String>-Project <String> Das Ziel Projekt.The target project. Wenn dieser Parameter ausgelassen wird, wird das Standard Projekt für die Paket-Manager-Konsole als Ziel Projekt verwendet.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
-StartupProject<String>-StartupProject <String> Das Startprojekt.The startup project. Wenn dieser Parameter ausgelassen wird, wird das Startprojekt in Projektmappeneigenschaften als Ziel Projekt verwendet. If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Args <String>-Args <String> Argumente, die an die Anwendung übermittelt werden.Arguments passed to the application. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.
-Verbose-Verbose Zeigt eine ausführliche Ausgabe an.Show verbose output.

Verwenden Sie den PowerShell-Befehl, um Hilfe Informationen zu einem Befehl anzuzeigen Get-Help .To show help information about a command, use PowerShell's Get-Help command.

Tipp

Die Parameter "Context", "Project" und "StartupProject" unterstützen die Tab-Erweiterung.The Context, Project, and StartupProject parameters support tab-expansion.

Add-MigrationAdd-Migration

Fügt eine neue Migration hinzu.Adds a new migration.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Name <String>-Name <String> Der Name der Migration.The name of the migration. Dies ist ein Positions Parameter, der erforderlich ist.This is a positional parameter and is required.
-OutputDir <String>-OutputDir <String> Das Verzeichnis, mit dem die Dateien ausgegeben werden.The directory use to output the files. Pfade sind relativ zum Ziel Projektverzeichnis.Paths are relative to the target project directory. Der Standardwert ist "Migrationen".Defaults to "Migrations".
-Namespace <String>-Namespace <String> Der Namespace, der für die generierten Klassen verwendet werden soll.The namespace to use for the generated classes. Wird standardmäßig aus dem Ausgabeverzeichnis generiert.Defaults to generated from the output directory. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Drop-DatabaseDrop-Database

Löscht die Datenbank.Drops the database.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-WhatIf-WhatIf Zeigen Sie an, welche Datenbank gelöscht werden soll, aber löschen Sie Sie nicht.Show which database would be dropped, but don't drop it.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Get-DbContextGet-DbContext

Listet Informationen zu verfügbaren Typen auf und ruft Sie ab DbContext .Lists and gets information about available DbContext types.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Get-MigrationGet-Migration

Listet verfügbare Migrationen auf.Lists available migrations. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Verbindung <String>-Connection <String> Die Verbindungszeichenfolge für die Datenbank.The connection string to the database. Der Standardwert ist der in "adddbcontext" oder "onkonfiguration" angegebene.Defaults to the one specified in AddDbContext or OnConfiguring.
-Noconnect-NoConnect Stellen Sie keine Verbindung mit der Datenbank her.Don't connect to the database.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Remove-MigrationRemove-Migration

Entfernt die letzte Migration (führt einen Rollback für die Codeänderungen aus, die für die Migration durchgeführt wurden).Removes the last migration (rolls back the code changes that were done for the migration).

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Force-Force Setzen Sie die Migration zurück (führen Sie ein Rollback der Änderungen aus, die auf die Datenbank angewendet wurden).Revert the migration (roll back the changes that were applied to the database).

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Scaffold-DbContextScaffold-DbContext

Generiert Code für einen DbContext und Entitäts Typen für eine Datenbank.Generates code for a DbContext and entity types for a database. Damit Scaffold-DbContext ein Entitätstyp generiert werden kann, muss die Datenbanktabelle über einen Primärschlüssel verfügen.In order for Scaffold-DbContext to generate an entity type, the database table must have a primary key.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Verbindung <String>-Connection <String> Die Verbindungszeichenfolge für die Datenbank.The connection string to the database. Bei ASP.net Core 2. x-Projekten kann der Wert " Name = <name of connection string>" lauten.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. In diesem Fall stammt der Name aus den Konfigurations Quellen, die für das Projekt eingerichtet sind.In that case the name comes from the configuration sources that are set up for the project. Dies ist ein Positions Parameter, der erforderlich ist.This is a positional parameter and is required.
-Anbieter <String>-Provider <String> Der zu verwendende Anbieter.The provider to use. In der Regel ist dies der Name des nuget-Pakets, z Microsoft.EntityFrameworkCore.SqlServer . b.:.Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer. Dies ist ein Positions Parameter, der erforderlich ist.This is a positional parameter and is required.
-OutputDir <String>-OutputDir <String> Das Verzeichnis, in dem Dateien abgelegt werden sollen.The directory to put files in. Pfade sind relativ zum Projektverzeichnis.Paths are relative to the project directory.
-Contextdir <String>-ContextDir <String> Das Verzeichnis, in das die Datei eingefügt werden soll DbContext .The directory to put the DbContext file in. Pfade sind relativ zum Projektverzeichnis.Paths are relative to the project directory.
-Namespace <String>-Namespace <String> Der Namespace, der für alle generierten Klassen verwendet werden soll.The namespace to use for all generated classes. Wird standardmäßig aus dem Stamm Namespace und dem Ausgabeverzeichnis generiert.Defaults to generated from the root namespace and the output directory. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.
-Contextnamespace <String>-ContextNamespace <String> Der Namespace, der für die generierte Klasse verwendet werden soll DbContext .The namespace to use for the generated DbContext class. Hinweis: überschreibt -Namespace .Note: overrides -Namespace. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.
-Kontext <String>-Context <String> Der Name der DbContext zu generierenden Klasse.The name of the DbContext class to generate.
-Schemas <String[]>-Schemas <String[]> Die Schemas von Tabellen, für die Entitäts Typen generiert werden sollen.The schemas of tables to generate entity types for. Wenn dieser Parameter ausgelassen wird, werden alle Schemas eingeschlossen.If this parameter is omitted, all schemas are included.
-Tabellen <String[]>-Tables <String[]> Die Tabellen, für die Entitäts Typen generiert werden sollen.The tables to generate entity types for. Wenn dieser Parameter ausgelassen wird, werden alle Tabellen eingeschlossen.If this parameter is omitted, all tables are included.
-DataAnnotations-DataAnnotations Verwenden Sie Attribute, um das Modell zu konfigurieren (sofern möglich).Use attributes to configure the model (where possible). Wenn dieser Parameter ausgelassen wird, wird nur die fließende API verwendet.If this parameter is omitted, only the fluent API is used.
-Usedatabasenames-UseDatabaseNames Verwenden Sie Tabellen-und Spaltennamen genau so, wie Sie in der Datenbank angezeigt werden.Use table and column names exactly as they appear in the database. Wenn dieser Parameter ausgelassen wird, werden Datenbanknamen geändert, sodass Sie den c#-namens Stil Konventionen genauer entsprechen.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Überschreibt vorhandene Dateien.Overwrite existing files.
-Noonkonfigurierung-NoOnConfiguring Nicht generieren DbContext.OnConfiguring .Don't generate DbContext.OnConfiguring. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.
-Nopluralize-NoPluralize Verwenden Sie nicht das pluralizer-Element.Don't use the pluralizer. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Beispiel:Example:

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

Beispiel, bei dem nur ausgewählte Tabellen gerüziert werden und der Kontext in einem separaten Ordner mit einem angegebenen Namen und Namespace erstellt wird:Example that scaffolds only selected tables and creates the context in a separate folder with a specified name and namespace:

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

Im folgenden Beispiel wird die Verbindungs Zeichenfolge aus der Konfiguration des Projekts gelesen, die möglicherweise mit dem Secret Manager-Toolfestgelegt wirdThe following example reads the connection string from the project's configuration possibly set using the Secret Manager tool.

Scaffold-DbContext "Name=ConnectionStrings:Blogging" Microsoft.EntityFrameworkCore.SqlServer

Script-DbContextScript-DbContext

Generiert ein SQL-Skript aus dem dbcontext.Generates a SQL script from the DbContext. Umgeht alle Migrationen.Bypasses any migrations. In EF Core 3,0 hinzugefügt.Added in EF Core 3.0.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Ausgabe <String>-Output <String> Die Datei, in die das Ergebnis geschrieben werden soll.The file to write the result to.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Script-MigrationScript-Migration

Generiert ein SQL-Skript, mit dem alle Änderungen von einer ausgewählten Migration zu einer anderen ausgewählten Migration übernommen werden.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Parameter:Parameters:

ParameterParameter BESCHREIBUNGDescription
-Von<String>-From <String> Die Migration wird gestartet.The starting migration. Migrationen können anhand des Namens oder der ID identifiziert werden.Migrations may be identified by name or by ID. Die Zahl 0 (null) ist ein Sonderfall, der vor der ersten Migration liegt.The number 0 is a special case that means before the first migration. Der Standardwert ist 0.Defaults to 0.
Bis<String>-To <String> Die Beendigung der Migration.The ending migration. Standardmäßig wird die letzte Migration verwendet.Defaults to the last migration.
-Idempotent-Idempotent Generieren Sie ein Skript, das bei jeder Migration in einer Datenbank verwendet werden kann.Generate a script that can be used on a database at any migration.
-Notransactions-NoTransactions Generieren Sie keine SQL-Transaktions Anweisungen.Don't generate SQL transaction statements. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.
-Ausgabe <String>-Output <String> Die Datei, in die das Ergebnis geschrieben werden soll.The file to write the result to. Wenn dieser Parameter ausgelassen wird, wird die Datei mit einem generierten Namen im selben Ordner erstellt, in dem die Laufzeitdateien der App erstellt werden, z. b.: /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/.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Tipp

Die Parameter to, from und Output unterstützen die Tab-Erweiterung.The To, From, and Output parameters support tab-expansion.

Im folgenden Beispiel wird ein Skript für die InitialCreate-Migration (aus einer Datenbank ohne Migrationen) erstellt, wobei der Name der Migration verwendet wird.The following example creates a script for the InitialCreate migration (from a database without any migrations), using the migration name.

Script-Migration 0 InitialCreate

Im folgenden Beispiel wird ein Skript für alle Migrationen nach der InitialCreate-Migration mit der Migrations-ID erstellt.The following example creates a script for all migrations after the InitialCreate migration, using the migration ID.

Script-Migration 20180904195021_InitialCreate

Update-DatabaseUpdate-Database

Aktualisiert die Datenbank auf die letzte Migration oder eine angegebene Migration.Updates the database to the last migration or to a specified migration.

ParameterParameter BESCHREIBUNGDescription
-Migration<String>-Migration <String> Die Ziel Migration.The target migration. Migrationen können anhand des Namens oder der ID identifiziert werden.Migrations may be identified by name or by ID. Die Zahl 0 (null) ist ein Sonderfall, der vor der ersten Migration steht und bewirkt, dass alle Migrationen rückgängig gemacht werden.The number 0 is a special case that means before the first migration and causes all migrations to be reverted. Wenn keine Migration angegeben ist, wird für den Befehl standardmäßig die letzte Migration verwendet.If no migration is specified, the command defaults to the last migration.
-Verbindung <String>-Connection <String> Die Verbindungszeichenfolge für die Datenbank.The connection string to the database. Der Standardwert ist der in AddDbContext oder angegebene OnConfiguring .Defaults to the one specified in AddDbContext or OnConfiguring. In EF Core 5,0 hinzugefügt.Added in EF Core 5.0.

Die allgemeinen Parameter sind oben aufgeführt.The common parameters are listed above.

Tipp

Der Migrations Parameter unterstützt die Erweiterung der Registerkarte.The Migration parameter supports tab-expansion.

Im folgenden Beispiel werden alle Migrationen wieder hergestellt.The following example reverts all migrations.

Update-Database 0

In den folgenden Beispielen wird die-Datenbank auf eine angegebene Migration aktualisiert.The following examples update the database to a specified migration. Der erste verwendet den Migrations Namen, der zweite verwendet die Migrations-ID und eine angegebene Verbindung:The first uses the migration name and the second uses the migration ID and a specified connection:

Update-Database InitialCreate
Update-Database 20180904195021_InitialCreate -Connection your_connection_string

Zusätzliche RessourcenAdditional resources