Entity Framework Core odnoszą się narzędzia — interfejs wiersza polecenia platformy .NETEntity Framework Core tools reference - .NET CLI

Narzędzia interfejsu wiersza polecenia (CLI) dla platformy Entity Framework Core wykonywać zadania podczas projektowania.The command-line interface (CLI) 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 są rozszerzenie dla wielu platform dotnet polecenia, który jest częścią programu zestawu .NET Core SDK.The commands are an extension to the cross-platform dotnet command, which is part of the .NET Core SDK. Te narzędzia działają w projektach .NET Core.These tools work with .NET Core projects.

Jeśli używasz programu Visual Studio, firma Microsoft zaleca narzędzia Konsola Menedżera pakietów zamiast tego:If you're using Visual Studio, we recommend the Package Manager Console tools instead:

  • Działają automatycznie z bieżącego projektu wybranego w Konsola Menedżera pakietów bez konieczności ręcznie Przełącz katalogi.They automatically work with the current project selected in the Package Manager Console without requiring that you manually switch directories.
  • One automatycznie otwarte pliki wygenerowane za pomocą polecenia, po zakończeniu polecenia.They automatically open files generated by a command after the command is completed.

Instalowanie narzędziInstalling the tools

Procedura instalacji zależy od typu projektu, a wersja:The installation procedure depends on project type and version:

  • Platforma ASP.NET Core w wersji 2.1 i nowszeASP.NET Core version 2.1 and later
  • EF Core 2.xEF Core 2.x
  • EF Core 1.xEF Core 1.x

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

  • Zainstaluj bieżącą zestawu .NET Core SDK.Install the current .NET Core SDK. Zestaw SDK został zainstalowany, nawet jeśli masz najnowszą wersję programu Visual Studio 2017.The SDK has to be installed even if you have the latest version of Visual Studio 2017.

    To wszystko, co jest niezbędne dla platformy ASP.NET Core 2.1 +, ponieważ Microsoft.EntityFrameworkCore.Design pakietu znajduje się w meta Microsoft.aspnetcore.all Microsoft.AspNetCore.App.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 (nie platformy ASP.NET Core)EF Core 2.x (not ASP.NET Core)

dotnet ef Poleceń są zawarte w zestawie SDK programu .NET Core, ale aby włączyć polecenia należy zainstalować Microsoft.EntityFrameworkCore.Design pakietu.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.

  • Zainstaluj bieżącą zestawu .NET Core SDK.Install the current .NET Core SDK. Zestaw SDK został zainstalowany, nawet jeśli masz najnowszą wersję programu Visual Studio 2017.The SDK has to be installed even if you have the latest version of Visual Studio 2017.

  • Zainstaluj najnowszy stabilny Microsoft.EntityFrameworkCore.Design pakietu.Install the latest stable Microsoft.EntityFrameworkCore.Design package.

    dotnet add package Microsoft.EntityFrameworkCore.Design
    

EF Core 1.xEF Core 1.x

  • Zainstaluj zestaw .NET Core SDK w wersji 2.1.200.Install the .NET Core SDK version 2.1.200. Nowsze wersje nie są zgodne z narzędzi interfejsu wiersza polecenia dla programu EF Core 1.0 i 1.1.Later versions are not compatible with CLI tools for EF Core 1.0 and 1.1.

  • Konfigurowanie aplikacji do użycia 2.1.200 wersja zestawu SDK, modyfikując jego global.json pliku.Configure the application to use the 2.1.200 SDK version by modifying its global.json file. Ten plik zwykle znajduje się w katalogu rozwiązania (po jednym powyżej projektu).This file is normally included in the solution directory (one above the project).

  • Edytowanie pliku projektu i dodawanie Microsoft.EntityFrameworkCore.Tools.DotNet jako DotNetCliToolReference elementu.Edit the project file and add Microsoft.EntityFrameworkCore.Tools.DotNet as a DotNetCliToolReference item. Na przykład określić najnowszej wersji 1.x: 1.1.6.Specify the latest 1.x version, for example: 1.1.6. Zobacz przykład pliku projektu, na końcu tej sekcji.See the project file example at the end of this section.

  • Zainstaluj najnowszą wersję 1.x Microsoft.EntityFrameworkCore.Design pakietów, na przykład:Install the latest 1.x version of the Microsoft.EntityFrameworkCore.Design package, for example:

    dotnet add package Microsoft.EntityFrameworkCore.Design -v 1.1.6
    

    Plik projektu za pomocą obu dodać odwołania do pakietu, wygląda mniej więcej tak: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>
    

    Odwołania do pakietu przy użyciu PrivateAssets="All" nie jest widoczne dla projektów odwołujących się do tego projektu.A package reference with PrivateAssets="All" isn't exposed to projects that reference this project. To ograniczenie jest szczególnie przydatne w przypadku pakietów, które zazwyczaj są używane tylko podczas programowania.This restriction is especially useful for packages that are typically only used during development.

Weryfikowanie instalacjiVerify installation

Uruchom następujące polecenia, aby zweryfikować poprawne zainstalowanie narzędzi interfejsu wiersza polecenia programu EF Core:Run the following commands to verify that EF Core CLI tools are correctly installed:

dotnet restore
dotnet ef

Dane wyjściowe polecenia identyfikuje wersję narzędzia w użyciu: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.>

Przy użyciu narzędziUsing the tools

Przed rozpoczęciem korzystania z narzędzi, trzeba utworzyć projekt startowy, lub należy ustawić środowisko.Before using the tools, you might have to create a startup project or set the environment.

Projekt docelowy i projekt startowyTarget project 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 w bieżącym katalogu jest projekt docelowy.By default, the project in the current directory 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 w bieżącym katalogu jest projekt startowy.By default, the project in the current directory 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 interfejsu wiersza polecenia pracować z projektami .NET Core i projektów programu .NET Framework.The CLI tools work with .NET Core projects and .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ć projekt aplikacji konsoli .NET Core, którego jedynym celem jest do działania jako projekt startowy dla narzędzi.In such cases, you can create a .NET Core 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.To do that, they need to use the .NET Core 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 ASPNETCORE_ENVIRONMENT zmiennej środowiskowej przed uruchomieniem polecenia.To specify the environment for ASP.NET Core projects, set the ASPNETCORE_ENVIRONMENT environment variable before running commands.

Typowe opcjeCommon options

OpcjaOption OpisDescription
--json Pokaż dane wyjściowe JSON.Show JSON output.
-c --context <DBCONTEXT> 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 ta opcja zostanie pominięty, programem EF Core znajdzie klasy kontekstu.If this option is omitted, EF Core will find the context class. W przypadku wielu klas kontekstu, ta opcja jest wymagana.If there are multiple context classes, this option is required.
-p --project <PROJECT> Względna ścieżka do folderu projektu do projektu docelowego.Relative path to the project folder of the target project. Wartością domyślną jest bieżący folder.Default value is the current folder.
-s --startup-project <PROJECT> Względna ścieżka do folderu projektu Projekt startowy.Relative path to the project folder of the startup project. Wartością domyślną jest bieżący folder.Default value is the current folder.
--framework <FRAMEWORK> Moniker platformy docelowej dla platformę docelową.The Target Framework Moniker for the target framework. Użyj pliku projektu określa wiele platform docelowych, gdy chcesz wybrać jeden z nich.Use when the project file specifies multiple target frameworks, and you want to select one of them.
--configuration <CONFIGURATION> Konfigurację kompilacji, na przykład: Debug lub Release.The build configuration, for example: Debug or Release.
--runtime <IDENTIFIER> Identyfikator docelowe środowisko uruchomieniowe w celu przywrócenia pakietów dla.The identifier of the target runtime to restore packages for. Aby uzyskać listę identyfikatorów środowisk uruchomieniowych (RID), zobacz katalogu RID.For a list of Runtime Identifiers (RIDs), see the RID catalog.
-h --help Pokaż informacje pomocy.Show help information.
-v --verbose Wyświetlić pełne dane wyjściowe.Show verbose output.
--no-color Nie kolorować danych wyjściowych.Don't colorize output.
--prefix-output Prefiks danych wyjściowych z poziomu.Prefix output with level.

docelowej bazie danych ef DotNetdotnet ef database drop

Porzuca bazy danych.Drops the database.

Opcje:Options:

OpcjaOption OpisDescription
-f --force Nie Potwierdź.Don't confirm.
--dry-run 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.

Aktualizacja bazy danych programu ef DotNetdotnet ef database update

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

Argumenty:Arguments:

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

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:

dotnet ef database update InitialCreate
dotnet ef database update 20180904195021_InitialCreate

informacje kontekstu dbcontext ef DotNetdotnet ef dbcontext info

Pobiera informacje DbContext typu.Gets information about a DbContext type.

Lista typu dbcontext ef DotNetdotnet ef dbcontext list

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

Tworzenie szkieletu dbcontext ef DotNetdotnet ef dbcontext scaffold

Generuje kod dla DbContext i typy jednostek bazy danych.Generates code for a DbContext and entity types for a database. Aby to polecenie, aby wygenerować typ jednostki w tabeli bazy danych musi mieć klucz podstawowy.In order for this command to generate an entity type, the database table must have a primary key.

Argumenty:Arguments:

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

Opcje:Options:

OpcjaOption OpisDescription
-d-d --data-annotations Aby skonfigurować model (tam, gdzie jest to możliwe), należy użyć atrybutów.Use attributes to configure the model (where possible). Jeśli ta opcja zostanie pominięty, jest używany tylko interfejsu API fluent.If this option is omitted, only the fluent API is used.
-c --context <NAME> Nazwa DbContext klasy do wygenerowania.The name of the DbContext class to generate.
--context-dir <PATH> Katalog, aby umieścić DbContext plik klasy.The directory to put the DbContext class file in. Ścieżki są względne wobec katalogu projektu.Paths are relative to the project directory. Przestrzenie nazw są uzyskiwane z nazwy folderów.Namespaces are derived from the folder names.
-f --force Nadpisz istniejące pliki.Overwrite existing files.
-o --output-dir <PATH> Katalog, który można umieścić pliki klas jednostek w.The directory to put entity class files in. Ścieżki są względne wobec katalogu projektu.Paths are relative to the project directory.
--schema <SCHEMA_NAME>... Schematów tabel w celu wygenerowania typów jednostek dla.The schemas of tables to generate entity types for. Aby określić wiele schematów, powtórz --schema dla każdej z nich.To specify multiple schemas, repeat --schema for each one. Jeśli ta opcja zostanie pominięty, uwzględniono wszystkich schematów.If this option is omitted, all schemas are included.
-t --table <TABLE_NAME>...--table <TABLE_NAME>... Tabele, aby wygenerować typy jednostek dla.The tables to generate entity types for. Aby określić wiele tabel, powtórz -t lub --table dla każdej z nich.To specify multiple tables, repeat -t or --table for each one. Jeśli ta opcja zostanie pominięty, wszystkie tabele są uwzględniane.If this option is omitted, all tables are included.
--use-database-names 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 ta opcja zostanie pominięty, nazwy baz danych zostały zmienione, aby ściślej odpowiadają Konwencji stylistycznych nazwy języka C#.If this option is omitted, database names are changed to more closely conform to C# name style conventions.

W poniższym przykładzie scaffolds wszystkie schematy i tabele i umieszcza nowe pliki w modeli folderu.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

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

Dodaj migracji ef DotNetdotnet ef migrations add

Dodaje nową migrację.Adds a new migration.

Argumenty:Arguments:

ArgumentArgument OpisDescription
<NAME> Nazwa migracji.The name of the migration.

Opcje:Options:

OpcjaOption OpisDescription
-o --output-dir <PATH> Katalog (i podrzędnej przestrzeni nazw) do użycia.The directory (and sub-namespace) to use. Ścieżki są względne wobec katalogu projektu.Paths are relative to the project directory. Wartość domyślna to "Migracja".Defaults to "Migrations".

Lista migracje ef DotNetdotnet ef migrations list

Wyświetla listę dostępnych migracji.Lists available migrations.

Usuń migracji ef DotNetdotnet ef migrations remove

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

Opcje:Options:

OpcjaOption OpisDescription
-f --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).

skrypt migracji ef DotNetdotnet ef migrations script

Generuje skrypt SQL z migracji.Generates a SQL script from migrations.

Argumenty:Arguments:

ArgumentArgument OpisDescription
<FROM> 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.
<TO> Końcowy migracji.The ending migration. Domyślnie do ostatniego migracji.Defaults to the last migration.

Opcje:Options:

OpcjaOption OpisDescription
-o --output <FILE> Plik można zapisać skryptu.The file to write the script to.
-i --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.

Poniższy przykład tworzy skrypt migracji InitialCreate:The following example creates a script for the InitialCreate migration:

dotnet ef migrations script 0 InitialCreate

Poniższy przykład tworzy skrypt w przypadku wszystkich migracji po migracji InitialCreate.The following example creates a script for all migrations after the InitialCreate migration.

dotnet ef migrations script 20180904195021_InitialCreate