Ferramentas de linha de comando do EF Core .NETEF Core .NET Command-line Tools

As ferramentas de linha de comando do Entity Framework Core .NET são uma extensão para a plataforma cruzada dotnet comando, que é parte do SDK do .NET Core.The Entity Framework Core .NET Command-line Tools are an extension to the cross-platform dotnet command, which is part of the .NET Core SDK.

Dica

Se você estiver usando o Visual Studio, recomendamos [as ferramentas de PMC] 1 em vez disso, já que eles fornecem uma experiência mais integrada.If you're using Visual Studio, we recommend the PMC Tools instead since they provide a more integrated experience.

Instalando as ferramentasInstalling the tools

Observação

SDK do .NET Core 2.1.300 de versão e mais recente inclui dotnet ef comandos que são compatíveis com o EF Core 2.0 e versões posteriores.The .NET Core SDK version 2.1.300 and newer includes dotnet ef commands that are compatible with EF Core 2.0 and later versions. Portanto, se você estiver usando versões recentes do SDK do .NET Core e o tempo de execução do EF Core, nenhuma instalação é necessária e você pode ignorar o restante desta seção.Therefore if you are using recent versions of the .NET Core SDK and the EF Core runtime, no installation is required and you can ignore the rest of this section.

Por outro lado, o dotnet ef ferramenta contida na versão do SDK do .NET Core 2.1.300 e mais recente não é compatível com a versão do EF Core 1.0 e 1.1.On the other hand, the dotnet ef tool contained in .NET Core SDK version 2.1.300 and newer is not compatible with EF Core version 1.0 and 1.1. Antes de você pode trabalhar com um projeto que usa essas versões anteriores do EF Core em um computador que tem o SDK do .NET Core 2.1.300 ou mais recente instalado, você também deve instalar a versão 2.1.200 ou mais antiga do SDK e configurar o aplicativo para usar essa versão, modificando sua global. JSON arquivo.Before you can work with a project that uses these earlier versions of EF Core on a computer that has .NET Core SDK 2.1.300 or newer installed, you must also install version 2.1.200 or older of the SDK and configure the application to use that older version by modifying its global.json file. Normalmente, esse arquivo está incluído no diretório da solução (um acima do projeto).This file is normally included in the solution directory (one above the project). Em seguida, você pode prosseguir com a instrução 2161DS abaixo.Then you can proceed with the installlation instruction below.

Para versões anteriores do SDK do .NET Core, você pode instalar as ferramentas de linha de comando do EF Core .NET usando as seguintes etapas:For previous versions of the .NET Core SDK, you can install the EF Core .NET Command-line Tools using these steps:

  1. Edite o arquivo de projeto e adicione entityframeworkcore como um item DotNetCliToolReference (veja abaixo)Edit the project file and add Microsoft.EntityFrameworkCore.Tools.DotNet as a DotNetCliToolReference item (See below)

  2. Execute os seguintes comandos:Run the following commands:

    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet restore
    

O projeto resultante deve ter esta aparência:The resulting project should look something like this:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>netcoreapp2.0</TargetFramework>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Microsoft.EntityFrameworkCore.Design"
                      Version="2.0.0"
                      PrivateAssets="All" />
  </ItemGroup>
  <ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet"
                            Version="2.0.0" />
  </ItemGroup>
</Project>

Observação

Uma referência de pacote com PrivateAssets="All" significa que ele não é exposto aos projetos que fazem referência a este projeto, o que é especialmente útil para os pacotes que normalmente são usados apenas durante o desenvolvimento.A package reference with PrivateAssets="All" means it isn't exposed to projects that reference this project, which is especially useful for packages that are typically only used during development.

Se você fez tudo certo, você deve ser capaz de executar com êxito o comando a seguir em um prompt de comando.If you did everything right, you should be able to successfully run the following command in a command prompt.

dotnet ef

Usando as ferramentasUsing the tools

Sempre que você invoca um comando, existem dois projetos envolvidos:Whenever you invoke a command, there are two projects involved:

O projeto de destino é aquele ao qual todos os arquivos são adicionados (ou, em alguns casos, removidos).The target project is where any files are added (or in some cases removed). O projeto de destino padrão é o projeto no diretório atual, mas pode ser alterado usando o --project opção.The target project defaults to the project in the current directory, but can be changed using the --project option.

O projeto de inicialização é aquele emulado pelas ferramentas durante a execução do código do seu projeto.The startup project is the one emulated by the tools when executing your project's code. Ele também assume como padrão o projeto no diretório atual, mas pode ser alterado usando o --startup-project opção.It also defaults to the project in the current directory, but can be changed using the --startup-project option.

Observação

Por exemplo, atualizar o banco de dados do seu aplicativo web que tenha instalado em um projeto diferente do EF Core teria esta aparência: dotnet ef database update --project {project-path} (a partir do seu diretório de aplicativo web)For instance, updating the database of your web application that has EF Core installed in a different project would look like this: dotnet ef database update --project {project-path} (from your web app directory)

Opções comuns:Common options:

--json Mostra a saída JSON.Show JSON output.
-c-c --context <DBCONTEXT> O DbContext usar.The DbContext to use.
-p-p --project <PROJECT> O projeto para usar.The project to use.
-s-s --startup-project <PROJECT> O projeto de inicialização para usar.The startup project to use.
--framework <FRAMEWORK> A estrutura de destino.The target framework.
--configuration <CONFIGURATION> A configuração a ser usada.The configuration to use.
--runtime <IDENTIFIER> O tempo de execução para usar.The runtime to use.
-h-h --help Mostre informações de Ajuda.Show help information.
-v-v --verbose Mostra saída detalhada.Show verbose output.
--no-color Não colorir saída.Don't colorize output.
--prefix-output Prefixo com o nível de saída.Prefix output with level.

Dica

Para especificar o ambiente do ASP.NET Core, defina as ASPNETCORE_ENVIRONMENT variável de ambiente antes da execução.To specify the ASP.NET Core environment, set the ASPNETCORE_ENVIRONMENT environment variable before running.

ComandosCommands

lista de banco de dados do dotnet efdotnet ef database drop

Descarta o banco de dados.Drops the database.

Opções:Options:

-f-f --force Confirme se não.Don't confirm.
--dry-run Mostrar qual banco de dados deve ser descartado, mas não o remova.Show which database would be dropped, but don't drop it.

atualização de banco de dados do dotnet efdotnet ef database update

Atualiza o banco de dados para uma migração especificada.Updates the database to a specified migration.

Argumentos:Arguments:

<MIGRATION> A migração de destino.The target migration. Se for 0, todas as migrações serão revertidas.If 0, all migrations will be reverted. O padrão é para a última migração.Defaults to the last migration.

informações do dotnet ef dbcontextdotnet ef dbcontext info

Obtém informações sobre um tipo DbContext.Gets information about a DbContext type.

lista do dotnet ef dbcontextdotnet ef dbcontext list

Lista os tipos disponíveis de DbContext.Lists available DbContext types.

scaffold do dotnet ef dbcontextdotnet ef dbcontext scaffold

Usa o Scaffold de um DbContext e tipos de entidade para um banco de dados.Scaffolds a DbContext and entity types for a database.

Argumentos:Arguments:

<CONNECTION> A cadeia de conexão para o banco de dados.The connection string to the database.
<PROVIDER> O provedor a ser usado.The provider to use. (por exemplo, entityframeworkcore)(for example, Microsoft.EntityFrameworkCore.SqlServer)

Opções:Options:

-d-d --data-annotations Use atributos para configurar o modelo (quando possível).Use attributes to configure the model (where possible). Se omitido, somente a API fluente é usada.If omitted, only the fluent API is used.
-c-c --context <NAME> O nome do DbContext.The name of the DbContext.
--context-dir <PATH> O diretório para colocar o arquivo de DbContext.The directory to put DbContext file in. Caminhos são relativos ao diretório do projeto.Paths are relative to the project directory.
-f-f --force Substitua arquivos existentes.Overwrite existing files.
-o-o --output-dir <PATH> O diretório para colocar os arquivos.The directory to put files in. Caminhos são relativos ao diretório do projeto.Paths are relative to the project directory.
--schema <SCHEMA_NAME>... Os esquemas de tabelas para gerar tipos de entidade para.The schemas of tables to generate entity types for.
-t-t --table <TABLE_NAME>...--table <TABLE_NAME>... As tabelas para gerar tipos de entidade para.The tables to generate entity types for.
--use-database-names Use nomes de tabela e coluna diretamente do banco de dados.Use table and column names directly from the database.

Adicionar migrações do ef dotnetdotnet ef migrations add

Adiciona uma nova migração.Adds a new migration.

Argumentos:Arguments:

<NAME> O nome da migração.The name of the migration.

Opções:Options:

-o-o --output-dir <PATH> --output-dir <PATH> O diretório (e sub-namespace) para usar.The directory (and sub-namespace) to use. Caminhos são relativos ao diretório do projeto.Paths are relative to the project directory. O padrão é "Migrações".Defaults to "Migrations".

lista de migrações dotnet efdotnet ef migrations list

Lista as migrações disponíveis.Lists available migrations.

Remover de migrações do ef dotnetdotnet ef migrations remove

Remove a última migração.Removes the last migration.

Opções:Options:

-f-f --force Reverta a migração, se ele tiver sido aplicado ao banco de dados.Revert the migration if it has been applied to the database.

script de migrações dotnet efdotnet ef migrations script

Gera um script SQL de migrações.Generates a SQL script from migrations.

Argumentos:Arguments:

<FROM> A migração inicial.The starting migration. O padrão é 0 (o banco de dados inicial).Defaults to 0 (the initial database).
<TO> A migração final.The ending migration. O padrão é para a última migração.Defaults to the last migration.

Opções:Options:

-o-o --output <FILE> O arquivo para gravar o resultado.The file to write the result to.
-i-i --idempotent Gere um script que pode ser usado em um banco de dados em qualquer migração.Generate a script that can be used on a database at any migration.