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

As ferramentas de linha de comando Entity Framework Core .NET são uma extensão de várias plataformas dotnet comando, que é parte do .NET Core SDK.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, é recomendável [as ferramentas de PMC] 1 em vez disso, uma vez 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

O núcleo do .NET SDK versão 2.1.300 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 de núcleo do .NET e o tempo de execução do núcleo do EF, 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 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 principal em um computador que tem o SDK do .NET Core 2.1.300 ou posterior esteja instalado, você também deve instalar a versão 2.1.200 ou mais antiga do SDK e configure o aplicativo para usar a versão antiga, modificando seu 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ê poderá continuar com a instrução 2161DS abaixo.Then you can proceed with the installlation instruction below.

Para versões anteriores do SDK do núcleo do .NET, você pode instalar as ferramentas de linha de comando do EF principais .NET usando estas 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 adicionar Microsoft.EntityFrameworkCore.Tools.DotNet como um item de 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 ela não está exposta a projetos que fazem referência a este projeto, o que é especialmente útil para os pacotes que normalmente são usados somente 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ê poderá 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ê chamar um comando, há dois projetos envolvidas: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 por padrão para o projeto no diretório atual, mas pode ser alterado usando o – projeto 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 usa como padrão o projeto no diretório atual, mas pode ser alterado usando o – projeto de inicialização 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 o EF Core instalado em um projeto diferente teria esta aparência: dotnet ef database update --project {project-path} (do diretório de aplicativo da 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--json Mostra saída JSON.Show JSON output.
-c-c – contexto <DBCONTEXT >--context <DBCONTEXT> O DbContext para usar.The DbContext to use.
-p-p – projeto <projeto >--project <PROJECT> O projeto a usar.The project to use.
-s-s – projeto de inicialização <projeto >--startup-project <PROJECT> O projeto de inicialização para usar.The startup project to use.
– framework <FRAMEWORK >--framework <FRAMEWORK> A estrutura de destino.The target framework.
– configuração <Configuração >--configuration <CONFIGURATION> A configuração a ser usada.The configuration to use.
o tempo de execução – <identificador >--runtime <IDENTIFIER> O tempo de execução para usar.The runtime to use.
-h-h – Ajuda--help Mostra informações de Ajuda.Show help information.
-v-v -verbose--verbose Mostra saída detalhada.Show verbose output.
– sem cor--no-color Não colorir saída.Don't colorize output.
--prefix-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 o ASPNETCORE_ENVIRONMENT variável de ambiente antes de executar.To specify the ASP.NET Core environment, set the ASPNETCORE_ENVIRONMENT environment variable before running.

ComandosCommands

remoção de banco de dados de ef dotnetdotnet ef database drop

Descarta o banco de dados.Drops the database.

Opções:Options:

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

atualização de banco de dados de ef dotnetdotnet ef database update

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

Argumentos:Arguments:

<MIGRAÇÃO ><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 de dbcontext ef dotnetdotnet ef dbcontext list

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

scaffold de dbcontext ef dotnetdotnet ef dbcontext scaffold

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

Argumentos:Arguments:

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

Opções:Options:

-d-d --data-annotations--data-annotations Use atributos para configurar o modelo (onde for 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 – contexto <nome >--context <NAME> O nome do DbContext.The name of the DbContext.
-dir contexto <caminho >--context-dir <PATH> O diretório para colocar o arquivo DbContext no.The directory to put DbContext file in. Caminhos são relativas ao diretório do projeto.Paths are relative to the project directory.
-f-f -force--force Substitua arquivos existentes.Overwrite existing files.
-o-o -dir saída <caminho >--output-dir <PATH> O diretório de colocar arquivos em.The directory to put files in. Caminhos são relativas ao diretório do projeto.Paths are relative to the project directory.
--schema <SCHEMA_NAME>...--schema <SCHEMA_NAME>... Os esquemas de tabelas para gerar tipos de entidade para.The schemas of tables to generate entity types for.
-t-t -tabela <TABLE_NAME >...--table <TABLE_NAME>... As tabelas para gerar tipos de entidade para.The tables to generate entity types for.
– use nomes de banco de dados--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 de ef dotnetdotnet ef migrations add

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

Argumentos:Arguments:

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

Opções:Options:

-o-o -dir saída <caminho >--output-dir <PATH> O diretório (e sub-namespace) a ser usado.The directory (and sub-namespace) to use. Caminhos são relativas ao diretório do projeto.Paths are relative to the project directory. O padrão é "Migrações".Defaults to "Migrations".

lista de migrações ef dotnetdotnet ef migrations list

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

Remova as migrações de ef dotnetdotnet ef migrations remove

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

Opções:Options:

-f-f -force--force Reverta a migração se ela foi aplicada ao banco de dados.Revert the migration if it has been applied to the database.

script de migrações ef dotnetdotnet ef migrations script

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

Argumentos:Arguments:

<DE ><FROM> A migração inicial.The starting migration. O padrão é 0 (o banco de dados inicial).Defaults to 0 (the initial database).
<PARA ><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 -saída <arquivo >--output <FILE> O arquivo para gravar o resultado.The file to write the result to.
-i-i – idempotente--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.