Справочник по - консоль диспетчера пакетов в Visual Studio средствам Entity Framework CoreEntity Framework Core tools reference - Package Manager Console in Visual Studio

Инструменты консоли диспетчера пакетов (PMC) для Entity Framework Core выполнения задач разработки во время разработки.The Package Manager Console (PMC) tools for Entity Framework Core perform design-time development tasks. Например, они создают миграций, применить миграции и создать код для модели, основанные на существующей базы данных.For example, they create migrations, apply migrations, and generate code for a model based on an existing database. Команды выполняются внутри Visual Studio с помощью консоль диспетчера пакетов.The commands run inside of Visual Studio using the Package Manager Console. Эти инструменты совместимы с проектами .NET Framework и .NET Core.These tools work with both .NET Framework and .NET Core projects.

Если вы не используете Visual Studio, мы рекомендуем инструменты командной строки EF Core вместо этого.If you aren't using Visual Studio, we recommend the EF Core Command-line Tools instead. Средства CLI кросс платформенные и выполнения в командной строке.The CLI tools are cross-platform and run inside a command prompt.

Установка инструментовInstalling the tools

Процедуры по установке и средства обновления отличаются между ASP.NET Core 2.1 или более поздней и более ранних версий или других типов проектов.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 версии 2.1 и более поздние версииASP.NET Core version 2.1 and later

Средства автоматически включаются в проекте ASP.NET Core 2.1 или более поздней, так как Microsoft.EntityFrameworkCore.Tools пакет включен в метапакет 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.

Поэтому не нужно ничего делать, чтобы установить средства, но вам нужно:Therefore, you don't have to do anything to install the tools, but you do have to:

  • Восстановите пакеты перед использованием средства в новый проект.Restore packages before using the tools in a new project.
  • Установите пакет для обновления до более новой версии инструментов.Install a package to update the tools to a newer version.

Чтобы убедиться в том, что вы получаете последнюю версию средства, рекомендуется также выполнить следующие действия:To make sure that you're getting the latest version of the tools, we recommend that you also do the following step:

  • Изменить ваш .csproj файл и добавьте строку, указав последнюю версию Microsoft.EntityFrameworkCore.Tools пакета.Edit your .csproj file and add a line specifying the latest version of the Microsoft.EntityFrameworkCore.Tools package. Например .csproj файл может содержать ItemGroup , выглядящий следующим образом: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>
    

Обновите инструменты при получении сообщения, как в следующем примере:Update the tools when you get a message like the following example:

Версия средства EF Core «2.1.1-rtm-30846» старше, среды выполнения «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'. Обновите инструменты для новейших функций и исправления ошибок.Update the tools for the latest features and bug fixes.

Чтобы обновить средства:To update the tools:

  • Установите последний пакет SDK .NET Core.Install the latest .NET Core SDK.
  • Обновление Visual Studio до последней версии.Update Visual Studio to the latest version.
  • Изменить .csproj файл, теперь она содержит ссылки на последнюю версию пакета средств, пакет, как показано выше.Edit the .csproj file so that it includes a package reference to the latest tools package, as shown earlier.

Другие версии и типы проектовOther versions and project types

Установить средства консоль диспетчера пакетов, выполнив следующую команду в консоль диспетчера пакетов:Install the Package Manager Console tools by running the following command in Package Manager Console:

Install-Package Microsoft.EntityFrameworkCore.Tools

Обновить инструменты, выполнив следующую команду в консоль диспетчера пакетов.Update the tools by running the following command in Package Manager Console.

Update-Package Microsoft.EntityFrameworkCore.Tools

Проверка установкиVerify the installation

Убедитесь, что установлены средства, выполнив следующую команду:Verify that the tools are installed by running this command:

Get-Help about_EntityFrameworkCore

Результат выглядит следующим образом (она не сообщает, какие версии инструментов, вы используете):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.>

С помощью средствUsing the tools

Перед использованием средства:Before using the tools:

  • Понимать разницу между целевой и запуска проекта.Understand the difference between target and startup project.
  • Узнайте, как использовать средства с помощью библиотеки классов .NET Standard.Learn how to use the tools with .NET Standard class libraries.
  • Для проектов ASP.NET Core настройте среду.For ASP.NET Core projects, set the environment.

Целевой объект и запуска проектаTarget and startup project

См. команды проекта и запускаемым проектом.The commands refer to a project and a startup project.

  • Проекта также известен как целевой проект так как это где команды добавления или удаления файлов.The project is also known as the target project because it's where the commands add or remove files. По умолчанию проект по умолчанию на консоль диспетчера пакетов является целевого проекта.By default, the Default project selected in Package Manager Console is the target project. Можно указать другой проект в качестве целевого проекта с помощью --project параметр.You can specify a different project as target project by using the --project option.

  • Запускаемым проектом является тот, который построение и запуск средств.The startup project is the one that the tools build and run. Средства должны выполнить код приложения во время разработки для получения сведений о проекте, например строку подключения базы данных и конфигурации модели.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. По умолчанию запускаемым проектом в обозревателе решений является запускаемым проектом.By default, the Startup Project in Solution Explorer is the startup project. Можно указать другой проект запускаемым проектом с помощью --startup-project параметр.You can specify a different project as startup project by using the --startup-project option.

Зачастую того же проекта запускаемого проекта и целевой проект.The startup project and target project are often the same project. Типичный сценарий, где они находятся отдельные проекты — когда:A typical scenario where they are separate projects is when:

  • В библиотеке классов .NET Core, EF Core контекст и классы сущностей.The EF Core context and entity classes are in a .NET Core class library.
  • Консольное приложение .NET Core или веб-приложение ссылается на библиотеку классов.A .NET Core console app or web app references the class library.

Существует также возможность поместите код миграции в библиотеку классов, отдельно от контекста EF Core.It's also possible to put migrations code in a class library separate from the EF Core context.

Другие целевые платформыOther target frameworks

Консоль диспетчера пакетов средств работы с проектами .NET Core или .NET Framework.The Package Manager Console tools work with .NET Core or .NET Framework projects. Приложения, которые имеют модель EF Core в библиотеку классов .NET Standard может отсутствовать, .NET Core или .NET Framework проекта.Apps that have the EF Core model in a .NET Standard class library might not have a .NET Core or .NET Framework project. Например это верно для приложений Xamarin и универсальной платформы Windows.For example, this is true of Xamarin and Universal Windows Platform apps. В таком случае можно создать .NET Core или .NET Framework проекта консольного приложения, единственным назначением которого является в качестве запускаемого проекта для средств.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. Проект может быть пустым проектом с не содержащим реального кода — этот компонент необходим только для предоставления целевой объект для выполнения средства.The project can be a dummy project with no real code — it is only needed to provide a target for the tooling.

Почему является пустым проектом требуется?Why is a dummy project required? Как упоминалось ранее, средства нужно выполнять код приложения во время разработки.As mentioned earlier, the tools have to execute application code at design time. Чтобы сделать это, они должны использовать среду выполнения .NET Core или .NET Framework.To do that, they need to use the .NET Core or .NET Framework runtime. Когда модель EF Core находится в проекте, ориентированном на .NET Core или .NET Framework, средства EF Core позаимствовать среды выполнения из проекта.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. Они не могут делать, если модель EF Core в библиотеку классов .NET Standard.They can't do that if the EF Core model is in a .NET Standard class library. .NET Standard не фактическую реализацию .NET; это спецификация набора API-интерфейсов, реализации .NET должны поддерживать.The .NET Standard is not an actual .NET implementation; it's a specification of a set of APIs that .NET implementations must support. Поэтому .NET Standard недостаточно для инструментов EF Core для выполнения кода приложения.Therefore .NET Standard is not sufficient for the EF Core tools to execute application code. Фиктивный проект, созданный для использования в качестве запускаемого проекта предоставляет конкретную целевую платформу, в которой средства можно загружать библиотеки классов .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.

Среда ASP.NET CoreASP.NET Core environment

Чтобы указать среду для проектов ASP.NET Core, задайте env:ASPNETCORE_ENVIRONMENT перед выполнением команд.To specify the environment for ASP.NET Core projects, set env:ASPNETCORE_ENVIRONMENT before running commands.

Общие параметрыCommon parameters

В следующей таблице показаны параметры, которые являются общими для всех команд EF Core:The following table shows parameters that are common to all of the EF Core commands:

ПараметрParameter Описание:Description
-Контексте <строка >-Context <String> DbContext Класс для использования.The DbContext class to use. Имя класса, только из цифр или полное с пространствами имен.Class name only or fully qualified with namespaces. Если этот параметр опущен, EF Core находит класс контекста.If this parameter is omitted, EF Core finds the context class. Если имеется несколько классов контекста, этот параметр является обязательным.If there are multiple context classes, this parameter is required.
— Проект <строка >-Project <String> Целевой проект.The target project. Если этот параметр опущен, проект по умолчанию для консоль диспетчера пакетов используется в качестве целевого проекта.If this parameter is omitted, the Default project for Package Manager Console is used as the target project.
-StartupProject <строка >-StartupProject <String> Запускаемый проект.The startup project. Если этот параметр опущен, запускаемым проектом в свойства решения используется в качестве целевого проекта.If this parameter is omitted, the Startup project in Solution properties is used as the target project.
-Verbose-Verbose Показать подробные выходные данные.Show verbose output.

Чтобы отобразить справочные сведения о команде, используйте PowerShell Get-Help команды.To show help information about a command, use PowerShell's Get-Help command.

Совет

Параметры контекста, проекта и StartupProject поддерживает расширение функций клавиши tab.The Context, Project, and StartupProject parameters support tab-expansion.

Add-MigrationAdd-Migration

Добавление новой миграции.Adds a new migration.

Параметры:Parameters:

ПараметрParameter Описание:Description
-Name <строка >-Name <String> Имя миграции.The name of the migration. Это является позиционным параметром и является обязательным.This is a positional parameter and is required.
-OutputDir <строка >-OutputDir <String> Каталог (и sub-namespace) для использования.The directory (and sub-namespace) to use. Пути задаются относительно каталога проекта целевой объект.Paths are relative to the target project directory. По умолчанию используется «Миграция».Defaults to "Migrations".

DROP DatabaseDrop-Database

Удаляет базу данных.Drops the database.

Параметры:Parameters:

ПараметрParameter Описание:Description
-WhatIf-WhatIf Показать базу данных, которая будет удалена, но не удаляйте ее.Show which database would be dropped, but don't drop it.

Get-DbContextGet-DbContext

Выводит список доступных DbContext типов.Lists available DbContext types.

Remove-MigrationRemove-Migration

Удаляет последнюю миграцию (выполняется откат изменений кода, которые были выполнены для миграции).Removes the last migration (rolls back the code changes that were done for the migration).

Параметры:Parameters:

ПараметрParameter Описание:Description
-Force-Force Миграции отменить (откатить изменения, которые были применены к базе данных).Revert the migration (roll back the changes that were applied to the database).

Scaffold-DbContextScaffold-DbContext

Создает код для DbContext и типы сущностей для базы данных.Generates code for a DbContext and entity types for a database. Чтобы Scaffold-DbContext для создания типа сущности, в таблице базы данных должна иметь первичный ключ.In order for Scaffold-DbContext to generate an entity type, the database table must have a primary key.

Параметры:Parameters:

ПараметрParameter Описание:Description
-Connection <строка >-Connection <String> Строка подключения к базе данных.The connection string to the database. Для проектов ASP.NET Core 2.x, значение может быть имя =<имя строки подключения >.For ASP.NET Core 2.x projects, the value can be name=<name of connection string>. В этом случае имя берется из источников конфигурации, которые были настроены для проекта.In that case the name comes from the configuration sources that are set up for the project. Это является позиционным параметром и является обязательным.This is a positional parameter and is required.
-Поставщик <строка >-Provider <String> Используемый поставщик.The provider to use. Обычно это имя пакета NuGet, например: Microsoft.EntityFrameworkCore.SqlServer.Typically this is the name of the NuGet package, for example: Microsoft.EntityFrameworkCore.SqlServer. Это является позиционным параметром и является обязательным.This is a positional parameter and is required.
-OutputDir <строка >-OutputDir <String> Чтобы поместить файлы каталог.The directory to put files in. Пути задаются относительно каталога проекта.Paths are relative to the project directory.
-ContextDir <строка >-ContextDir <String> Каталог для размещения DbContext в файл.The directory to put the DbContext file in. Пути задаются относительно каталога проекта.Paths are relative to the project directory.
-Контексте <строка >-Context <String> Имя DbContext класса, необходимо создать.The name of the DbContext class to generate.
-Схемы <String [] >-Schemas <String[]> Схемы таблиц для создания типов сущности для.The schemas of tables to generate entity types for. Если этот параметр опущен, включаются все схемы.If this parameter is omitted, all schemas are included.
-Таблицы <String [] >-Tables <String[]> Для создания типов сущности для таблиц.The tables to generate entity types for. Если этот параметр опущен, включаются все таблицы.If this parameter is omitted, all tables are included.
-DataAnnotations-DataAnnotations Атрибуты можно используйте для настройки модели (где это возможно).Use attributes to configure the model (where possible). Если этот параметр опущен, используется только текучего API.If this parameter is omitted, only the fluent API is used.
-UseDatabaseNames-UseDatabaseNames Используйте имена таблиц и столбцов, так же, как в базе данных.Use table and column names exactly as they appear in the database. Если этот параметр опущен, имена баз данных меняется на более точно соответствовать соглашениям C# имя стиля.If this parameter is omitted, database names are changed to more closely conform to C# name style conventions.
-Force-Force Перезаписывайте существующие файлы.Overwrite existing files.

ПримерExample:

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

Пример, который формирует шаблоны только указанных таблиц и создает контекст в отдельную папку с указанным именем.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-Migration

Формирует скрипт SQL, который применяет все изменения из одной выбранной миграции к другой выбранный миграции.Generates a SQL script that applies all of the changes from one selected migration to another selected migration.

Параметры:Parameters:

ПараметрParameter Описание:Description
-Из <строка >-From <String> Начала миграции.The starting migration. Миграция может быть идентифицирован по имени или по идентификатору.Migrations may be identified by name or by ID. Число 0 является особым случаем, это значит, что перед первой миграции.The number 0 is a special case that means before the first migration. По умолчанию равно 0.Defaults to 0.
- <Строка >-To <String> Окончания миграции.The ending migration. По умолчанию к последней миграции.Defaults to the last migration.
-Идемпотентными-Idempotent Создайте скрипт, который может использоваться в любой базе данных с любой миграции.Generate a script that can be used on a database at any migration.
-Выходной <строка >-Output <String> Файл для записи результата.The file to write the result to. Если этот параметр указан, файл создается с созданным именем в той же папке при создании файлов среды выполнения приложения, например: /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/.

Совет

To, From, и выходные параметры поддерживают расширение функций клавиши tab.The To, From, and Output parameters support tab-expansion.

В следующем примере создается скрипт для миграции это InitialCreate, используя имя миграции.The following example creates a script for the InitialCreate migration, using the migration name.

Script-Migration -To InitialCreate

В следующем примере создается скрипт для всех операций миграции после миграции это InitialCreate, используя идентификатор миграции.The following example creates a script for all migrations after the InitialCreate migration, using the migration ID.

Script-Migration -From 20180904195021_InitialCreate

Обновления базы данныхUpdate-Database

Обновляет базу данных, последнюю миграцию или указанного миграции.Updates the database to the last migration or to a specified migration.

ПараметрParameter Описание:Description
-Миграции <строка >-Migration <String> Целевой объект миграции.The target migration. Миграция может быть идентифицирован по имени или по идентификатору.Migrations may be identified by name or by ID. Число 0 является особым случаем, это значит, что перед первой миграции и вызывает всех операций переноса для отмены изменений.The number 0 is a special case that means before the first migration and causes all migrations to be reverted. Если перенос не указан, команда по умолчанию к последней миграции.If no migration is specified, the command defaults to the last migration.

Совет

Параметр миграции поддерживает расширение функций клавиши tab.The Migration parameter supports tab-expansion.

Следующий пример возвращает все миграции.The following example reverts all migrations.

Update-Database -Migration 0

Следующие примеры обновления базы данных для указанного миграции.The following examples update the database to a specified migration. Первый использует имя миграции, а второй использует идентификатор миграции:The first uses the migration name and the second uses the migration ID:

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

Дополнительные ресурсыAdditional resources