Recursos de linha de comando para o Entity Framework Core

É inegável o quão poderoso é o Visual Studio. Ele possui vários recursos que facilitam (e muito) o desenvolvimento. Mas, com o advento do .NET Core, e a possibilidade de criar a aplicação em qualquer plataforma, alguns desses recursos fazem falta em algumas delas.

Um desses recursos é o “Package Manager Console”, que além de permitir adicionar packages NuGet, também permite executar comandos para certos pacotes, como habilitar as migrations do Entity Framework.

Caso deseje desenvolver a sua aplicação em uma plataforma diferente do Windows (ou não queira utilizar o Visual Studio), o “Package Manager Console” deve ser substituído por comandos do .NET CLI, e neste artigo conheceremos os comandos do Entity Framework Core.

Organizando a casa

Os comandos do .NET CLI só estão disponíveis no SDK do .NET Core, então para executar os comandos que apresentarei a seguir, é necessário instalar este SDK no seu computador.

Além disso, os comandos só estão disponíveis para projetos definidos para uma das versões abaixo do .NET:

  • .NET Framework 4.5.1 ou superior (“net451”, “net452”, “net46”, etc.)
  • .NET Core App 1.0 ou superior (“netcoreapp1.0”, “netcoreapp1.1”, etc.)
Desenvolvedor C# Pleno
Formação: Desenvolvedor C# Pleno
A formação Desenvolvedor C# nível Pleno da TreinaWeb tem um enfoque sobre a conectividade entre o .NET Framework e os bancos de dados relacionais através do ADO.NET. Também serão abordados os recursos para desenvolvedores que o Oracle e o MySQL oferecem, como functions, stored procedures e triggers.
CONHEÇA A FORMAÇÃO

Preparando o palco

Com o ambiente organizado, você já poderá criar uma aplicação por linha de comando utilizando o .NET Core:

dotnet new console -o ExemploEntityCore

A aplicação criada com o comando acima, é uma aplicação de console simples. Ao acessar a pasta dela, é possível adicionar um pacote do NuGET pelo terminal:

dotnet add package Microsoft.EntityFrameworkCore.Design

O pacote Microsoft.EntityFrameworkCore.Design é quem adiciona as ferramentas de linha de comando para o Entity Framework Core. Assim, para elas funcionarem, é necessário executar o comando restore:

dotnet restore

Colocando a mão na massa

Adicione uma entidade na aplicação, como a abaixo:

public class Cliente {
    public int Id { get; set; }
    public string Nome { get; set; }
    public int Idade { get; set; }
}

Assim, é possível criar o DBContext com o comando abaixo:

dotnet ef dbcontext scaffold "Data Source=clientes.db" Microsoft.EntityFrameworkCore.SQLite -c "ClientesDbContext"

Ele irá criar a classe ClientesDbContext, que herdará DBContext, além de já configurar a string de conexão "Data Source=clientes.db", para o provider Microsoft.EntityFrameworkCore.SQLite.

Observação: Os pacotes Microsoft.EntityFrameworkCore.SQLite e Microsoft.EntityFrameworkCore.SQLite.Design deve ser adicionados na aplicação.

Se o comando “dotnet-ef” apresentar algum problema, verifique se foi adicionada a referência abaixo. Se não, adicione-a manualmente:

<ItemGroup>
    <DotNetCliToolReference Include="Microsoft.EntityFrameworkCore.Tools.DotNet" Version="1.0.0 " />
</ItemGroup>

Com o DbContext criado, adicione nele a entidade:

public DbSet<Cliente> Clientes { get; set; }

Que será possível adicionar migrations na aplicação:

dotnet ef migrations add CriaBase

Caso não tenha gostado do resultado, e queira desfazer a ação, pode ser utilizado comando:

dotnet ef migrations remove

Ele sempre irá remover a última migration criada.

Com uma migration definida, é possível executá-la com o comando:

dotnet ef database update

Como a nossa migration inicial cria a base de dados, ele pode ser desfeito com o comando abaixo:

dotnet ef database drop

Que exclui a base de dados.

Caso a entidade seja alterada:

public class Cliente {
    public int Id { get; set; }
    public string Nome { get; set; }
    public int Idade { get; set; }
    public char Sexo { get; set; }
}

É possível adicionar uma nova migration:

dotnet ef migrations add AddColumnSexo

E atualizar novamente a base de dados:

dotnet ef database update
Desenvolvedor ASP.NET Full-Stack
Formação: Desenvolvedor ASP.NET Full-Stack
A formação Desenvolvedor ASP.NET Full Stack da TreinaWeb tem como objetivo abordar as duas principais plataformas dentro do ASP.NET: o ASP.NET MVC, para criação de aplicações web seguindo o padrão MVC/MVW; e o ASP.NET WebAPI, para criação de APIs RESTful que sigam os padrões mais atuais da indústria.
CONHEÇA A FORMAÇÃO

Conclusão

Como foi possível notar, o CLI do Entity Core é muito similar ao realizado no “Package Manager Console”. Então, caso você já esteja acostumado a utilizá-lo no Visual Studio, não terá dificuldade para fazer uso dele pelo terminal. Mas em caso de dúvida, você pode informar o parâmetro --help para obter mais informações sobre cada comando.

Deixe seu comentário

Instrutor, nerd, cinéfilo e desenvolvedor nas horas vagas. Graduado em Ciências da Computação pela Universidade Metodista de São Paulo.