Entity Framework Core odnoszą się narzędzia — Konsola Menedżera pakietów w programie Visual StudioEntity Framework Core tools reference - Package Manager Console in Visual Studio

Narzędzia konsoli Menedżera pakietów (PMC) dla platformy Entity Framework Core wykonywać zadania podczas projektowania.The Package Manager Console (PMC) tools for Entity Framework Core perform design-time development tasks. Na przykład można utworzyć migracje, zastosuj migracje i wygenerować kod dla modelu, w oparciu o istniejącą bazę danych.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Polecenia uruchamiane wewnątrz programu Visual Studio przy użyciu Konsola Menedżera pakietów.The commands run inside of Visual Studio using the Package Manager Console. Te narzędzia działają w projektach .NET Core i .NET Framework.These tools work with both .NET Framework and .NET Core projects.

Jeśli nie używasz programu Visual Studio, firma Microsoft zaleca narzędzi wiersza polecenia programu EF Core zamiast tego.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. Narzędzia interfejsu wiersza polecenia są wieloplatformowe i wykonywania w wierszu polecenia.The CLI tools are cross-platform and run inside a command prompt.

Instalowanie narzędziInstalling the tools

Procedury instalowania i aktualizowania narzędzia różnią się między platformą ASP.NET Core 2.1 + i wcześniejszych wersji lub innych typów projektów.The procedures for installing and updating the tools differ between ASP.NET Core 2.1+ and earlier versions or other project types.

Platforma ASP.NET Core w wersji 2.1 i nowszeASP.NET Core version 2.1 and later

Narzędzia są automatycznie uwzględniane w projektach programu ASP.NET Core 2.1 +, ponieważ Microsoft.EntityFrameworkCore.Tools pakietu znajduje się w meta Microsoft.aspnetcore.all Microsoft.AspNetCore.App.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.

W związku z tym nie trzeba nic robić, aby zainstalować narzędzia, ale trzeba:Therefore, you don't have to do anything to install the tools, but you do have to:

  • Przywróć pakiety przed użyciem narzędzia w nowym projekcie.Restore packages before using the tools in a new project.
  • Zainstaluj pakiet, aby zaktualizować narzędzia do nowszej wersji.Install a package to update the tools to a newer version.

Aby upewnić się, że otrzymujesz najnowszej wersji narzędzia, firma Microsoft zaleca również wykonać poniższe czynności:To make sure that you're getting the latest version of the tools, we recommend that you also do the following step:

  • Edytuj swoje .csproj pliku i Dodaj wiersz, określając najnowszą wersję Microsoft.EntityFrameworkCore.Tools pakietu.Edit your .csproj file and add a line specifying the latest version of the Microsoft.EntityFrameworkCore.Tools package. Na przykład .csproj plik może zawierać ItemGroup , wygląda następująco: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>
    

Aktualizacja narzędzi, gdy zostanie wyświetlony komunikat jak w poniższym przykładzie:Update the tools when you get a message like the following example:

Wersja narzędzi programu EF Core "2.1.1-rtm-30846" jest starsza niż w przypadku środowiska uruchomieniowego "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'. Aktualizacja narzędzi do najnowszych funkcji i poprawek błędów.Update the tools for the latest features and bug fixes.

Aby zaktualizować narzędzia:To update the tools:

  • Zainstaluj najnowszy zestaw .NET Core SDK.Install the latest .NET Core SDK.
  • Aktualizacja programu Visual Studio do najnowszej wersji.Update Visual Studio to the latest version.
  • Edytuj .csproj plik zawiera odwołania do pakietu do najnowszego pakietu narzędzi, jak pokazano wcześniej.Edit the .csproj file so that it includes a package reference to the latest tools package, as shown earlier.

Inne wersje i typy projektówOther versions and project types

Instalowanie narzędzi Konsola Menedżera pakietów, uruchamiając następujące polecenie w Konsola Menedżera pakietów:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Aktualizacja narzędzi, uruchamiając następujące polecenie w Konsola Menedżera pakietów.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Weryfikowanie instalacjiVerify the installation

Sprawdź, czy narzędzia są zainstalowane, uruchamiając następujące polecenie:Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

Dane wyjściowe wyglądają następująco (program nie nakazuje możesz wersję narzędzia używasz):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.>

Przy użyciu narzędziUsing the tools

Przed rozpoczęciem korzystania z narzędzi:Before using the tools:

  • Należy zrozumieć różnicę między docelowej i uruchamianie projektu.Understand the difference between target and startup project.
  • Dowiedz się, jak używać narzędzi z biblioteki klas .NET Standard.Learn how to use the tools with .NET Standard class libraries.
  • Dla projektów ASP.NET Core należy ustawić środowisko.For ASP.NET Core projects, set the environment.

Element docelowy i uruchamianie projektuTarget and startup project

Polecenia można znaleźć projektu i projekt startowy.The commands refer to a project and a startup project.

  • Projektu jest także znana jako projekt docelowy ponieważ jest za której polecenia Dodawanie lub usuwanie plików.The project is also known as the target project because it's where the commands add or remove files. Domyślnie projekt domyślny wybranego w Konsola Menedżera pakietów jest projekt docelowy.By default, the Default project selected in Package Manager Console is the target project. Należy określić inny projekt jako projekt docelowy za pomocą --project opcji.You can specify a different project as target project by using the --project option.

  • Projekt startowy jest tą, która narzędzia skompilować i uruchomić.The startup project is the one that the tools build and run. Narzędzia konieczne wykonanie kodu aplikacji w czasie projektowania, aby uzyskać informacje na temat projektu, takie jak parametry połączenia bazy danych i Konfiguracja modelu.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. Domyślnie projekt startowy w Eksploratora rozwiązań jest projektem startowym.By default, the Startup Project in Solution Explorer is the startup project. Należy określić inny projekt jako projekt startowy, za pomocą --startup-project opcji.You can specify a different project as startup project by using the --startup-project option.

Projekt startowy i projekt docelowy często są tym samym projekcie.The startup project and target project are often the same project. Jest to typowy scenariusz, w którym są one oddzielnych projektów, gdy:A typical scenario where they are separate projects is when:

  • EF Core klasy kontekstu i jednostki są w bibliotece klas .NET Core.The EF Core context and entity classes are in a .NET Core class library.
  • Aplikacją sieci web lub aplikacji konsolowej .NET Core odwołuje się do biblioteki klas.A .NET Core console app or web app references the class library.

Istnieje również możliwość umieść kod migracji w bibliotece klas, niezależnie od kontekstu programu EF Core.It's also possible to put migrations code in a class library separate from the EF Core context.

Innych platform docelowychOther target frameworks

Narzędzia Konsola Menedżera pakietów pracować z projektami .NET Core lub .NET Framework.The Package Manager Console tools work with .NET Core or .NET Framework projects. Aplikacje, które mają modelu platformy EF Core w bibliotece klas programu .NET Standard może nie mieć platformy .NET Core lub .NET Framework projektu.Apps that have the EF Core model in a .NET Standard class library might not have a .NET Core or .NET Framework project. Na przykład dotyczy to aplikacji platformy Xamarin i platformy uniwersalnej Windows.For example, this is true of Xamarin and Universal Windows Platform apps. W takich przypadkach można utworzyć platformy .NET Core lub .NET Framework projekt aplikacji konsoli którego jedynym celem jest do działania jako projekt startowy dla narzędzi.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. Projekt może być fikcyjnego projektu bez rzeczywistego kodu — jest wymagana tylko do zapewnienia celu narzędzi.The project can be a dummy project with no real code — it is only needed to provide a target for the tooling.

Dlaczego jest projektem fikcyjnego wymagane?Why is a dummy project required? Jak wspomniano wcześniej, narzędzia konieczne wykonanie kodu aplikacji w czasie projektowania.As mentioned earlier, the tools have to execute application code at design time. Aby to zrobić, muszą one korzystania ze środowiska uruchomieniowego .NET Core lub .NET Framework.To do that, they need to use the .NET Core or .NET Framework runtime. Jeśli model programu EF Core jest w projekcie, który jest przeznaczony dla platformy .NET Core lub .NET Framework, narzędzia programu EF Core "pożyczać" środowisko uruchomieniowe z projektu.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. Nie można wykonać, jeśli model programu EF Core jest w bibliotece klas programu .NET Standard.They can't do that if the EF Core model is in a .NET Standard class library. .NET Standard nie jest rzeczywistą implementację .NET; jest określenie zestawu interfejsów API, który musi obsługiwać implementacje platformy .NET.The .NET Standard is not an actual .NET implementation; it's a specification of a set of APIs that .NET implementations must support. W związku z tym .NET Standard nie jest wystarczająca dla narzędzi programu EF Core do wykonywania kodu aplikacji.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Projekt zastępczy, utworzone jako projekt startowy zawiera platformy konkretnego celu, w którym narzędzia można załadować biblioteki klas .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.

Środowiska ASP.NET CoreASP.NET Core environment

Aby określić środowisko dla projektów ASP.NET Core, ustaw env:ASPNETCORE_ENVIRONMENT przed uruchomieniem polecenia.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Wspólne parametryCommon parameters

W poniższej tabeli przedstawiono parametry, które są wspólne dla wszystkich poleceń programu EF Core:The following table shows parameters that are common to all of the EF Core commands:

ParametrParameter OpisDescription
-Kontekstu <ciąg >-Context <String> DbContext Klasy.The DbContext class to use. Nazwa klasy tylko lub w pełni kwalifikowana za pomocą przestrzeni nazw.Class name only or fully qualified with namespaces. Jeśli ten parametr zostanie pominięty, programem EF Core umożliwia znalezienie klasy kontekstu.If this parameter is omitted, EF Core finds the context class. W przypadku wielu klas kontekstu, ten parametr jest wymagany.If there are multiple context classes, this parameter is required.
-Projekt <ciąg >-Project <String> Projekt docelowy.The target project. Jeśli ten parametr zostanie pominięty, projekt domyślny dla Konsola Menedżera pakietów służy jako projekt docelowy.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
Projekt startowy - <ciąg >-StartupProject <String> Projekt startowy.The startup project. Jeśli ten parametr zostanie pominięty, projekt startowy w właściwości rozwiązania służy jako projekt docelowy.If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Verbose-Verbose Wyświetlić pełne dane wyjściowe.Show verbose output.

Aby wyświetlić Pomoc dotyczącą polecenia, użyj programu PowerShell Get-Help polecenia.To show help information about a command, use PowerShell's Get-Help command.

Porada

Parametry kontekstu, projekt i projekt startowy obsługują rozszerzenia karty.The Context, Project, and StartupProject parameters support tab-expansion.

Dodaj migracjiAdd-Migration

Dodaje nową migrację.Adds a new migration.

Parametry:Parameters:

ParametrParameter OpisDescription
— Nazwa <ciąg >-Name <String> Nazwa migracji.The name of the migration. To jest parametr pozycyjne i jest wymagana.This is a positional parameter and is required.
-OutputDir <ciąg >-OutputDir <String> Katalog (i podrzędnej przestrzeni nazw) do użycia.The directory (and sub-namespace) to use. Ścieżki są względne wobec katalogu docelowego projektu.Paths are relative to the target project directory. Wartość domyślna to "Migracja".Defaults to "Migrations".

Baza danych listyDrop-Database

Porzuca bazy danych.Drops the database.

Parametry:Parameters:

ParametrParameter OpisDescription
-WhatIf-WhatIf Pokaż bazę danych, która będzie można usunąć, ale nie należy usuwać jej.Show which database would be dropped, but don't drop it.

Get-DbContextGet-DbContext

Wyświetla dostępne DbContext typów.Lists available DbContext types.

Usuń migracjęRemove-Migration

Usuwa ostatniej migracji (wycofanie zmian w kodzie, które zostały przygotowane do migracji).Removes the last migration (rolls back the code changes that were done for the migration).

Parametry:Parameters:

ParametrParameter OpisDescription
-Force-Force Przywróć migracji (wycofać zmiany, które zostały zastosowane do bazy danych).Revert the migration (roll back the changes that were applied to the database).

Tworzenie szkieletu DbContextScaffold-DbContext

Generuje kod dla DbContext i typy jednostek bazy danych.Generates code for a DbContext and entity types for a database. Aby Scaffold-DbContext można wygenerować typu jednostki, w tabeli bazy danych musi mieć klucz podstawowy.In order for Scaffold-DbContext to generate an entity type, the database table must have a primary key.

Parametry:Parameters:

ParametrParameter OpisDescription
-Connection <ciąg >-Connection <String> Parametry połączenia z bazą danych.The connection string to the database. W przypadku projektów ASP.NET Core 2.x wartość może być nazwa =<nazwa parametrów połączenia >.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. W takim przypadku nazwa pochodzi od źródła konfiguracji, które są skonfigurowane dla projektu.In that case the name comes from the configuration sources that are set up for the project. To jest parametr pozycyjne i jest wymagana.This is a positional parameter and is required.
-Provider <ciąg >-Provider <String> Dostawca do użycia.The provider to use. Zazwyczaj jest to nazwa pakietu NuGet, na przykład: Microsoft.EntityFrameworkCore.SqlServer.Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer. To jest parametr pozycyjne i jest wymagana.This is a positional parameter and is required.
-OutputDir <ciąg >-OutputDir <String> Katalog, który można umieścić pliki w.The directory to put files in. Ścieżki są względne wobec katalogu projektu.Paths are relative to the project directory.
-ContextDir <ciąg >-ContextDir <String> Katalog, aby umieścić DbContext w pliku.The directory to put the DbContext file in. Ścieżki są względne wobec katalogu projektu.Paths are relative to the project directory.
-Kontekstu <ciąg >-Context <String> Nazwa DbContext klasy do wygenerowania.The name of the DbContext class to generate.
-Schematów <String [] >-Schemas <String[]> Schematów tabel w celu wygenerowania typów jednostek dla.The schemas of tables to generate entity types for. Jeśli ten parametr zostanie pominięty, uwzględniono wszystkich schematów.If this parameter is omitted, all schemas are included.
-Tabele <String [] >-Tables <String[]> Tabele, aby wygenerować typy jednostek dla.The tables to generate entity types for. Jeżeli ten parametr zostanie pominięty, uwzględniane są wszystkie tabele.If this parameter is omitted, all tables are included.
-DataAnnotations-DataAnnotations Aby skonfigurować model (tam, gdzie jest to możliwe), należy użyć atrybutów.Use attributes to configure the model (where possible). Jeżeli pominięto ten parametr jest używany tylko interfejsu API fluent.If this parameter is omitted, only the fluent API is used.
-UseDatabaseNames-UseDatabaseNames Użyj nazwy tabel i kolumn dokładnie tak, jak pojawiają się w bazie danych.Use table and column names exactly as they appear in the database. Jeśli ten parametr zostanie pominięty, nazwy baz danych zostały zmienione, aby ściślej odpowiadają Konwencji stylistycznych nazwy języka C#.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Nadpisz istniejące pliki.Overwrite existing files.

Przykład:Example:

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

Przykład szkielety mechanizmów tylko wybrane tabele i tworzy kontekst w oddzielnym folderze z określoną nazwą: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

Skrypt migracjiScript-Migration

Generuje skrypt SQL, który dotyczy wszystkich zmian z jedną migrację wybranych innej wybranej migracji.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Parametry:Parameters:

ParametrParameter OpisDescription
-From <ciąg >-From <String> Począwszy od migracji.The starting migration. Migracje mogą być określane według nazwy lub identyfikatora.Migrations may be identified by name or by ID. Numer 0 jest przypadkiem szczególnym, oznacza to przed migracją pierwszy.The number 0 is a special case that means before the first migration. Wartość domyślna to 0.Defaults to 0.
— Do <ciąg >-To <String> Końcowy migracji.The ending migration. Domyślnie do ostatniego migracji.Defaults to the last migration.
-Idempotentne-Idempotent Generowanie skryptu, który może służyć w bazie danych w każdej migracji.Generate a script that can be used on a database at any migration.
-Dane wyjściowe <ciąg >-Output <String> Plik można zapisać wynik.The file to write the result to. Jeśli ten parametr zostanie pominięty, plik jest tworzony z użyciem nazwy wygenerowanej w tym samym folderze, ponieważ pliki środowiska uruchomieniowego aplikacji są tworzone, na przykład: /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/.

Porada

To, z danych wyjściowych z obsługą i parametrów rozszerzenia karty.The To, From, and Output parameters support tab-expansion.

Poniższy przykład tworzy skrypt w przypadku migracji InitialCreate przy użyciu nazwy migracji.The following example creates a script for the InitialCreate migration, using the migration name.

Script-Migration -To InitialCreate

Poniższy przykład tworzy skrypt wszystkich migracji po migracji InitialCreate przy użyciu identyfikatora migracji.The following example creates a script for all migrations after the InitialCreate migration, using the migration ID.

Script-Migration -From 20180904195021_InitialCreate

Aktualizuj bazy danychUpdate-Database

Aktualizuje bazę danych do ostatniej migracji lub określony migracji.Updates the database to the last migration or to a specified migration.

ParametrParameter OpisDescription
— Migracja <ciąg >-Migration <String> Migracja docelowego.The target migration. Migracje mogą być określane według nazwy lub identyfikatora.Migrations may be identified by name or by ID. Numer 0 jest przypadkiem szczególnym, oznacza to przed migracją pierwszy i powoduje, że wszystkich migracji, które można przywrócić.The number 0 is a special case that means before the first migration and causes all migrations to be reverted. Jeśli migracja nie zostanie określony, polecenie domyślne ostatnio migracji.If no migration is specified, the command defaults to the last migration.

Porada

Parametr migracji obsługuje rozszerzenia karty.The Migration parameter supports tab-expansion.

Poniższy przykład przywraca wszystkich migracji.The following example reverts all migrations.

Update-Database -Migration 0

Poniższe przykłady aktualizują bazę danych do określonego migracji.The following examples update the database to a specified migration. Pierwszy używa nazwy migracji, a drugi używa Identyfikatora migracji:The first uses the migration name and the second uses the migration ID:

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