Toolreferenz Entity Framework Core - 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 führen Sie während der Entwurfszeit-Entwicklungsaufgaben.The Package Manager Console (PMC) tools for Entity Framework Core perform design-time development tasks. Angenommen, sie erstellen Migrationen, Anwenden von Migrationen und Code für ein Modell basierend auf einer vorhandenen Datenbank generieren.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Ausführen der Befehle in Visual Studio mit der -Paket-Manager-Konsole.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, empfehlen wir die EF Core-Befehlszeilentools stattdessen.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. Die CLI-Tools sind – plattformübergreifend und in einer Eingabeaufforderung ausführen.The CLI tools are cross-platform and run inside a command prompt.

Installieren der ToolsInstalling the tools

Die Verfahren zum Installieren und aktualisieren die Tools unterscheiden sich zwischen ASP.NET Core 2.1 + und früheren Versionen oder anderen Projekttypen.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 Version 2.1 und höherASP.NET Core version 2.1 and later

Die Tools sind automatisch in einem Projekt auf ASP.NET Core 2.1 enthalten, da die Microsoft.EntityFrameworkCore.Tools Paket befindet sich auf die Microsoft.AspNetCore.App metapaket.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.

Aus diesem Grund, Sie müssen nichts tun, um die Tools installieren, jedoch müssen Sie:Therefore, you don't have to do anything to install the tools, but you do have to:

  • Stellen Sie Pakete wieder her, bevor Sie mit den Tools in einem neuen Projekt.Restore packages before using the tools in a new project.
  • Installieren Sie ein Paket, um die Tools auf eine neuere Version zu aktualisieren.Install a package to update the tools to a newer version.

Um sicherzustellen, dass Sie die neueste Version der Tools erhalten, empfehlen wir, dass Sie auch die folgende Schritte durchführen:To make sure that you're getting the latest version of the tools, we recommend that you also do the following step:

  • Bearbeiten Ihrer csproj -Datei und fügen Sie eine Zeile, in die neueste Version von der Microsoft.EntityFrameworkCore.Tools Paket.Edit your .csproj file and add a line specifying the latest version of the Microsoft.EntityFrameworkCore.Tools package. Z. B. die csproj Datei sind zum Beispiel eine ItemGroup , sieht folgendermaßen aus: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>
    

Aktualisieren Sie die Tools aus, wenn eine Meldung wie im folgenden Beispiel angezeigt:Update the tools when you get a message like the following example:

Die EF Core-Tools-Version "2.1.1-rtm-30846" ist älter als der die Laufzeit "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'. Aktualisieren Sie die Tools für die neuesten Features und Fehlerbehebungen.Update the tools for the latest features and bug fixes.

So aktualisieren Sie die Tools:To update the tools:

  • Installieren Sie das neueste .NET Core SDK an.Install the latest .NET Core SDK.
  • Visual Studio auf die neueste Version zu aktualisieren.Update Visual Studio to the latest version.
  • Bearbeiten der csproj Datei, sodass sie einen Paketverweis auf die neuesten Tools-Paket enthält, wie oben beschrieben.Edit the .csproj file so that it includes a package reference to the latest tools package, as shown earlier.

Andere Versionen und ProjekttypenOther versions and project types

Installieren Sie die Tools-Paket-Manager-Konsole mithilfe des folgenden Befehls -Paket-Manager-Konsole:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Aktualisieren Sie die Tools, mithilfe des folgenden Befehls -Paket-Manager-Konsole.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Überprüfen Sie die installationVerify the installation

Stellen Sie sicher, dass die Tools installiert sind, mit dem folgenden Befehl:Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

Die Ausgabe sieht folgendermaßen aus (nicht teilt es Ihnen die Version der Tools, die 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.>

Mithilfe der ToolsUsing the tools

Bevor Sie mit den Tools:Before using the tools:

  • Erfahren Sie, den Unterschied zwischen Ziel- und Startup-Projekt.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 die Umgebung für ASP.NET Core-Projekte.For ASP.NET Core projects, set the environment.

Ziel und Startup-ProjektTarget and startup project

Die Befehle finden Sie in einem Projekt und ein Startprojekt.The commands refer to a project and a startup project.

  • Die Projekt ist auch bekannt als die Zielprojekt da es sich handelt, in dem Sie die Befehle zum Hinzufügen oder Entfernen von Dateien.The project is also known as the target project because it's where the commands add or remove files. In der Standardeinstellung die Standardprojekt im -Paket-Manager-Konsole ist das Zielprojekt.By default, the Default project selected in Package Manager Console is the target project. Sie können ein anderes Projekt als Zielprojekt angeben, mit der --project Option.You can specify a different project as target project by using the --project option.

  • Die Startprojekt ist diejenige, die die Tools erstellen und ausführen.The startup project is the one that the tools build and run. Die Tools werden zum Ausführen der Anwendungscode zur Entwurfszeit zum Abrufen von Informationen über das Projekt, z. B. die Datenbank-Verbindungszeichenfolge 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. In der Standardeinstellung die Startprojekt in Projektmappen-Explorer das Startprojekt ist.By default, the Startup Project in Solution Explorer is the startup project. Sie können ein anderes Projekt als Startprojekt angeben, mit der --startup-project Option.You can specify a different project as startup project by using the --startup-project option.

Das Startprojekt und ein Zielprojekt sind häufig die gleichen Projekt.The startup project and target project are often the same project. Ein typisches Szenario, in dem sie separate Projekte sind, ist:A typical scenario where they are separate projects is when:

  • Die EF Core-Kontext und Entitätsklassen-Klassen sind in einer .NET Core-Klassenbibliothek.The EF Core context and entity classes are in a .NET Core class library.
  • Ein .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, platzieren migrationscode in eine Klassenbibliothek, die getrennt von den Entity Framework Core-Kontext.It's also possible to put migrations code in a class library separate from the EF Core context.

Andere ZielframeworksOther target frameworks

Die Paket-Manager-Konsole-Tools funktionieren mit .NET Core oder .NET Framework-Projekte.The Package Manager Console tools work with .NET Core or .NET Framework projects. Apps, die EF Core-Modell in einer .NET Standard-Klassenbibliothek verfügen, möglicherweise keiner .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 ist z. B. "true" mit Xamarin und die 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-Konsolenanwendungsprojekt erstellen, dessen einziger Zweck ist es, 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 realen Code sein — ist nur erforderlich, 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, haben die Tools zum Ausführen der Anwendungscode zur Entwurfszeit an.As mentioned earlier, the tools have to execute application code at design time. Zu diesem Zweck 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 die EF Core-Modell in einem Projekt, die auf .NET Core oder .NET Framework abzielt ist, nutzen die EF Core-Tools die Laufzeit aus dem Projekt.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. Sie können nicht dies tun, wenn das EF Core-Modell in einer .NET Standard-Klassenbibliothek ist.They can't do that if the EF Core model is in a .NET Standard class library. .NET Standard ist keine tatsächliche Implementierung von .NET. Es ist eine Spezifikation eines Satzes von APIs, die .NET-Implementierungen unterstützt wird 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. Aus diesem Grund ist .NET Standard nicht ausreichend für die EF Core-Tools, um Anwendungscode auszuführen.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Dem dummyprojekt, die Sie erstellen, für die Verwendung als Startup-Projekt enthält eine konkrete Zielplattform, die in der 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

Legen Sie zum Angeben der Umgebung für ASP.NET Core-Projekten Env:ASPNETCORE_ENVIRONMENT vor dem Ausführen der Befehle.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Allgemeine ParameterCommon parameters

Die folgende Tabelle zeigt die Parameter, 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 <Zeichenfolge >-Context <String> Die DbContext zu verwendende Klasse an.The DbContext class to use. Name der Klasse nur oder mit Namespaces vollqualifiziert.Class name only or fully qualified with namespaces. Wenn dieser Parameter ausgelassen wird, sucht Entity Framework Core die Context-Klasse.If this parameter is omitted, EF Core finds the context class. Dieser Parameter ist erforderlich, wenn es mehrere Kontextklassen sind.If there are multiple context classes, this parameter is required.
-Projekt <Zeichenfolge >-Project <String> Das Zielprojekt.The target project. Wenn dieser Parameter ausgelassen wird, die Standardprojekt für -Paket-Manager-Konsole als das Zielprojekt verwendet wird.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
-StartupProject <Zeichenfolge >-StartupProject <String> Das Startprojekt.The startup project. Wenn dieser Parameter ausgelassen wird, die Startprojekt in Projektmappeneigenschaften als das Zielprojekt verwendet wird.If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Verbose-Verbose Zeigen Sie ausführlichen Ausgabe.Show verbose output.

Um Hilfeinformationen zu einem Befehl zu anzuzeigen, verwenden Sie PowerShell Get-Help Befehl.To show help information about a command, use PowerShell's Get-Help command.

Tipp

Der Kontext, Projekt- und StartupProject parameterunterstützung Tab-Taste.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 <Zeichenfolge >-Name <String> Der Name der Migration.The name of the migration. Dies ist ein Positionsparameter und ist erforderlich.This is a positional parameter and is required.
-OutputDir <Zeichenfolge >-OutputDir <String> Das Verzeichnis (und Sub-Namespace) verwenden.The directory (and sub-namespace) to use. Pfade sind relativ zum Zielprojektverzeichnis.Paths are relative to the target project directory. Der Standardwert ist "Migrations".Defaults to "Migrations".

Drop-DatabaseDrop-Database

Löscht die Datenbank.Drops the database.

Parameter:Parameters:

ParameterParameter BeschreibungDescription
-WhatIf-WhatIf Anzeigen der Datenbank gelöscht werden würde, dies jedoch noch nicht.Show which database would be dropped, but don't drop it.

"Get-DbContext"Get-DbContext

Listet verfügbare DbContext Typen.Lists available DbContext types.

Remove-MigrationRemove-Migration

Entfernt die letzte Migration (Rollback die codeänderungen, 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 Zurücksetzen die Migration (ein Rollback die Änderungen, die auf die Datenbank angewendet wurden).Revert the migration (roll back the changes that were applied to the database).

"Scaffold-DbContext"Scaffold-DbContext

Generiert Code für eine DbContext und Entitätstypen für eine Datenbank.Generates code for a DbContext and entity types for a database. In der Reihenfolge für Scaffold-DbContext zum Generieren eines Entitätstyps muss in der 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
-Connection <Zeichenfolge >-Connection <String> Die Verbindungszeichenfolge in der Datenbank.The connection string to the database. Der Wert kann für ASP.NET Core 2.x-Projekte sein Name =<Name der Verbindungszeichenfolge >.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. In diesem Fall stammt der Name der Konfigurationsquellen, 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 Positionsparameter und ist erforderlich.This is a positional parameter and is required.
-Anbieter <Zeichenfolge >-Provider <String> Die zu verwendende Anbieter.The provider to use. Normalerweise hat der Name des NuGet-Pakets, z. B.: Microsoft.EntityFrameworkCore.SqlServer.Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer. Dies ist ein Positionsparameter und ist erforderlich.This is a positional parameter and is required.
-OutputDir <Zeichenfolge >-OutputDir <String> Zum Einfügen von Dateien im Verzeichnis.The directory to put files in. Pfade sind relativ zum Projektverzeichnis.Paths are relative to the project directory.
-ContextDir <Zeichenfolge >-ContextDir <String> Verzeichnis zum Ablegen der DbContext Datei.The directory to put the DbContext file in. Pfade sind relativ zum Projektverzeichnis.Paths are relative to the project directory.
-Kontext <Zeichenfolge >-Context <String> Der Name des der DbContext Klasse generiert.The name of the DbContext class to generate.
-Schemas <String [] >-Schemas <String[]> Die Schemas der Tabellen zur Generierung von Entitätstypen für.The schemas of tables to generate entity types for. Wenn dieser Parameter ausgelassen wird, sind alle Schemas enthalten.If this parameter is omitted, all schemas are included.
-Tabellen <String [] >-Tables <String[]> Die Tabellen zur Generierung von Entitätstypen für werden soll.The tables to generate entity types for. Wenn dieser Parameter ausgelassen wird, sind alle Tabellen enthalten.If this parameter is omitted, all tables are included.
-"DataAnnotations"-DataAnnotations Verwenden Sie Attribute, um das Modell (sofern möglich) zu konfigurieren.Use attributes to configure the model (where possible). Wenn dieser Parameter ausgelassen wird, wird nur die fluent-API verwendet.If this parameter is omitted, only the fluent API is used.
-UseDatabaseNames-UseDatabaseNames Verwenden Sie Tabellen- und Spaltennamen, genau wie in der Datenbank.Use table and column names exactly as they appear in the database. Wenn dieser Parameter ausgelassen wird, werden die Datenbanknamen geändert, um genauer zu Konventionen für C#-Namen entsprechen.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Überschreiben Sie vorhandene Dateien.Overwrite existing files.

Beispiel:Example:

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

Ein Beispiel, die nur ausgewählte Tabellen erstellt das Gerüst für den Kontext in einem separaten Ordner mit dem angegebenen Namen erstellt: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

Script-MigrationScript-Migration

Generiert ein SQL­Skript, das alle Änderungen von einem ausgewählten Migration auf die Migration zu einem anderen ausgewählten angewendet wird.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Parameter:Parameters:

ParameterParameter BeschreibungDescription
– Von <Zeichenfolge >-From <String> Die Migration der ab.The starting migration. Migrationen können nach Name oder ID identifiziert werdenMigrations may be identified by name or by ID. Die Zahl 0 ist ein Sonderfall, das bedeutet, dass vor der ersten Migration.The number 0 is a special case that means before the first migration. Der Standardwert ist 0.Defaults to 0.
– Bis <Zeichenfolge >-To <String> Der Endpunkt-Migration.The ending migration. Ist standardmäßig auf die letzte Migration ein.Defaults to the last migration.
-Idempotent-Idempotent Generieren Sie ein Skript, das für eine Datenbank auf eine Migration verwendet werden kann.Generate a script that can be used on a database at any migration.
-Ausgabe <Zeichenfolge >-Output <String> Die Datei, schreibt das Ergebnis.The file to write the result to. Wenn dieser Parameter ausgelassen wird, wird die Datei mit einem generierten Namen im gleichen Ordner erstellt, wie die app Runtime-Dateien, z. B. erstellt werden: /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/.

Tipp

To, From, und Output-Parameter unterstützen die Tab-Taste.The To, From, and Output parameters support tab-expansion.

Das folgende Beispiel erstellt ein Skript für die InitialCreate-Migration, die mit dem Migrationsnamen.The following example creates a script for the InitialCreate migration, using the migration name.

Script-Migration -To InitialCreate

Das folgende Beispiel erstellt ein Skript für alle Migrationen nach der Migration InitialCreate mithilfe der Migration-ID.The following example creates a script for all migrations after the InitialCreate migration, using the migration ID.

Script-Migration -From 20180904195021_InitialCreate

Update-DatabaseUpdate-Database

Aktualisiert die Datenbank aus, um die letzte Migration oder für eine angegebene Migration.Updates the database to the last migration or to a specified migration.

ParameterParameter BeschreibungDescription
-Migration <Zeichenfolge >-Migration <String> Die Ziel-Migration.The target migration. Migrationen können nach Name oder ID identifiziert werdenMigrations may be identified by name or by ID. Die Zahl 0 ist ein Sonderfall, das bedeutet, dass vor der ersten Migration und bewirkt, dass alle Migrationen zu 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, verwendet der Befehl auf die letzte Migration.If no migration is specified, the command defaults to the last migration.

Tipp

Der Parameter für die Migration unterstützt die Tab-Taste.The Migration parameter supports tab-expansion.

Im folgende Beispiel wird bei allen Migrationen zurückgesetzt.The following example reverts all migrations.

Update-Database -Migration 0

In den folgenden Beispielen wird die Datenbank für eine angegebene Migration aktualisieren.The following examples update the database to a specified migration. Das erste verwendet den Migrationsnamen aus, und die zweite verwendet den Migrations-ID:The first uses the migration name and the second uses the migration ID:

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