É 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.)
Formação Desenvolvedor C#
Conhecer a formaçãoPreparando 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
eMicrosoft.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
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.