CURSO NOVO - BLAZOR SERVER

balta.io balta.io
  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog

Seja Premium
balta.io

  • Cursos
  • Carreiras
  • Para sua Empresa
  • Agenda
  • Blog
  • Player
Seja Premium

Entre ou Cadastre-se

  • Home
  • Artigos
  • Migrations com EF Core, .NET 5 e PostgreSQL


Migrations com EF Core, .NET 5 e PostgreSQL

Se você não pode, ou mesmo não quer, utilizar MySQL em sua API-REST no .NET 5, leia esse artigo até o final e certamente conseguirá usar com PostgreSQL.

Então vamos lá! Descobri que meu computador (macOS Catalina 10.15.7) não possui recurso de hardware suficiente para instalação do MySQL. Sim, caros amigos, o MySQL só pode ser instalado em versões 11+ do macOS. Logo, como não posso comprar um outro computador neste momento, resolvi buscar em fóruns e sites a solução de como criar Migrations no PostgreSQL com .NET 5. Como não encontrei a resposta facilmente, busquei consolidar neste artigo todas as pesquisas que fiz para solucionar meu problema, espero que ajude de alguma forma.

A importância do aprendizado contínuo: incluí esse tópico porque apenas duas semanas depois de escrever este artigo, descobri através de um curso do Balta.io (que por sinal, super indico!) que poderia ter usado o Docker com SQL Server. Para saber mais, consulte este artigo do próprio Balta.io e conseguirá usar o SQL Server como alternativa, sem a necessidade de instalação em sua máquina.

O que você vai precisar instalar?

Primeiro, você precisará instalar o .NET 5, Postman (para testar sua API!) e o PostgreSQL em sua máquina.

Mas aqui já vai uma dica! Ao instalar o PostgreSQL, sugiro baixar o instalador, porque caso faça pelo HomeBrew (sistema de gerenciador de pacotes), você terá que fazer a configuração de usuário e senha após a instalação por linha de comando no terminal.

E vai por mim, se você é iniciante nessas coisas, pode dar bastante trabalho.

Instalações de pacotes NuGet no .NET 5

Com seu projeto aberto no .NET 5, adicione os seguintes pacotes pelo NuGet:

  1. Microsoft.EntityFrameworkCore
  2. Microsoft.EntityFrameworkCore.Design
  3. Microsoft.EntityFrameworkCore.Tools
  4. Npgsql.EntityFrameworkCore.PostgreSQL
  5. Nuget.CommandLine

No geral, os pacotes acima permitem que você tenha os recursos necessários para fazer o acesso a dados usando objetos .NET, conexão com o banco de dados PostgreSQL e trabalhar com o Nuget pela linha de comando no terminal.

Aqui mais uma dica! Caso você esteja usando a versão do .NET em um macOS, você não terá o recurso "Console de pacotes" no Visual Studio (pois é, ele é exclusivo para Windows e Linux) e terá que usar o terminal do seu sistema operacional.

Conectando com o banco de dados PostgreSQL

Com usuário e senha do banco de dados em mãos, crie a string de conexão no arquivo appsettings.json do seu projeto, conforme modelo abaixo:

"DbContextSettings": {  
    "ConnectionString": "User ID=**seu_nome_de_usuario**;Password=**sua_senha**;Host=localhost;Port=5432;Database=**nome_do_banco_do_projeto**;Pooling=true;"  
}

Importante! O texto "User ID=" deve ser escrito com um espaço entre as palavras User e ID. Os nomes de usuário do banco de dados, senha e database não podem conter espaço. Você não precisa ter criado um banco de dados manualmente pelo pgAdmin4 do PostgreSQL, basta você colocar o nome que deseja nesta configuração e ao gerar a Migrations, a Database e as tabelas serão criadas automaticamente.

Após isso, dentro do método "ConfigureService" do arquivo Startup.cs do seu projeto, declare a variável de conexão para que sempre seja executado durante a inicialização.

var connectionString = Configuration["dbContextSettings:ConnectionString"];  
    services.AddDbContext<VideoContext>(options =>  
    options.UseNpgsql(connectionString)  
);

Importante! Lembre-se de utilizar o ALT + ENTER para incluir as bibliotecas necessárias.

MacOS, um passo antes das Migrations com .NET 5

Importante! Se o seu Visual Studio estiver instalado no Windows, seja feliz e vá direto ao próximo tópico do artigo!

Caso esteja no macOS, terá que executar os comandos abaixo no Terminal (dentro do Visual Studio ou fora, pelo SO) antes de criar as Migrations. Lembre-se que o Visual Studio para macOS possui o Console de Pacotes, mas não é possível executar comandos nele, por isso é necessário fazer este procedimento.

dotnet tool install — global dotnet-ef
dotnet ef

A instalação dessas ferramentas CLI (interface de linha de comando) são necessárias para executarmos as Migrations pela linha de comando do Terminal.

Saiba mais:

# Visão geral da CLI do .NET

# Referência de ferramentas de Entity Framework Core – console do Gerenciador de pacotes no Visual Studio

Gerando Migrations no .NET 5 e PostgreSQL

Finalmente! Chegamos a etapa final e objetivo deste artigo existir.

Com sua API-REST criada, isto é, Models, Controllers, conexão aos dados configuradas e seu projeto executando sem erros. Acesse o Console de pacotes do seu projeto pelo Visual Studio e execute os comandos na ordem abaixo.

Importante! Se estiver usando um macOS, certifique-se que está localizado dentro da pasta do projeto (onde está o arquivo .csproj), antes de executar os comandos no Terminal (veja outros detalhes no tópico anterior).

1. Criando as migrations:

dotnet ef database update
dotnet ef migrations add InitialCreate

Com este comando, criamos o modelo instantâneo com base em nossa API-REST.

2. Criando o banco de dados e as tabelas

dotnet ef database update

Pronto! Se tudo estiver configurado conforme os tópicos anteriores, suas Migrations foram criadas. Agora coloque sua aplicação para rodar, abra o pgAdmin4 e o Postman e execute os testes necessários.

Abaixo listo outros comandos úteis para manutenção das Migrations.

Removendo migrations:

dotnet ef migrations remove

Obtendo mais informações sobre falhas:

dotnet ef migrations remove -v

Saiba mais:

# Tutorial: parte 5, aplicar migrações ao exemplo da Contoso University

# Migrações em ambientes de equipe

Concluindo, sem mais delongas!

Aprender algo novo é sempre um desafio. Requer investimento de tempo e muita resiliência para frustrações. Eu me considero uma iniciante em .NET e demorei um dia inteiro para conseguir encontrar a solução que descrevi acima.

Espero que tenha ajudado de alguma forma. Espero ainda mais… que este artigo inspire você a escrever sobre assuntos que você conhece e não encontrou facilmente.

Fique a vontade em compartilhar este artigo, mas principalmente, contribuir com comentários, caso você conheça outras formas mais fáceis de fazer o que tentei explicar aqui!

Um forte abraço! E como diria uma amigo "dúvidas, traumas ou angústias" sobre este conteúdo, estou a disposição para ajudar.

Cuide-se. Use máscara.

Populares

Priority Queue

Priority Queue ou fila prioritária é um tipo de lista inclusa no C# 10 que permite que seus itens...


Implicit Operators no C#

Implicit Operators permitem adicionar comportamentos de conversão a objetos Built In ou complexos...


ASP.NET 5 – Autenticação e Autorização com Bearer e JWT

Este artigo atualmente utiliza a versão 5.0.0-rc.1 do ASP.NET/.NET, o que significa que ainda não...


Clean Code - Guia e Exemplos

Saiba como manter seu código limpo (Clean Code) seguindo algumas práticas sugeridas pelo Robert C...


Git e GitHub - Instalação, Configuração e Primeiros Passos

Git é um sistema de controle de versões distribuídas, enquanto GitHub é uma plataforma que tem o ...


Compartilhe este artigo



Conheça o autor

Mariana Rizzo

Mariana Rizzo

C# .NET Developer Jr (Back-end)

Programmer, game player and ukulele player on free time. And yes, I love studying, I`m graduated in technology and psychology too!





2.438

Aulas disponíveis

235

horas de conteúdo

53.092

Alunos matriculados

36.728

Certificados emitidos





Comece de graça agora mesmo!

Temos mais de 18 cursos totalmente de graça e todos com certificado de conclusão.

Começar


Prefere algo mais Premium?

Conheça nossos planos



Premium semestral

Compra única, parcelada em até
12x no cartão de crédito


12x R$

41

,48

=R$ 497,80
  • 6 meses de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 54 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade

Premium anual

Compra única, parcelada em até
12x no cartão de crédito


12x R$

70

,65

=R$ 847,80
  • 1 ano de acesso
  • Acesso à todo conteúdo
  • Emissão de Certificado
  • Tira Dúvidas Online
  • 54 cursos disponíveis
  • 4 carreiras disponíveis
  • 161 temas de tecnologia
  • Conteúdo novo todo mês
  • Encontros Premium

Começar agora

Política de privacidade



Precisa de ajuda?

Dúvidas frequentes



  • Posso começar de graça?

    Sim! Basta criar sua conta gratuita no balta.io e começar seus estudos. Nós contamos com diversos cursos TOTALMENTE gratuitos e com certificado de conclusão.

  • Vou ter que pagar algo?

    Nós temos cursos gratuitos e pagos, porém você não precisa informar nenhum dado de pagamento para começar seus estudos gratuitamente conosco. Os cursos gratuitos são completos e com certificado de conclusão, você não paga nada por eles.

    Porém, caso queira algo mais Premium , você terá acesso à diversos benefícios que vão te ajudar ainda mais em sua carreira.

  • Por onde devo começar?

    Siga SEMPRE as nossas Carreiras , elas vão te orientar em todos os sentidos. Os cursos já estão organizados em categorias e carreiras para facilitar seu aprendizado.
    Nossa sugestão para aprendizado é começar pelo Backend e seguindo para Frontend e Mobile.

    • Backend
    • Frontend
    • Mobile

  • Os cursos ensinam tudo que preciso?

    Nenhum curso no mundo vai te ensinar tudo, desculpa ser sincero! Os cursos são uma base, eles fornecem por volta de 30% do que você precisa aprender, o resto é com você, com dedicação e MUITA prática.

  • O que eu devo estudar?

    Java ou .NET? Angular ou React? Xamarin ou Flutter? A resposta é simples e direta: "Você já sabe o básico?"

    Se você ainda não sabe BEM o básico, ou seja, os fundamentos, OOP, SOLID, Clean Code, está perdendo tempo estudando Frameworks ou até coisas mais avançadas como Docker. Foque nos seus objetivos primeiro.
    Agora se você está indeciso sobre qual Framework estudar, a boa notícia é que o mercado neste momento está bem aquecido e você tem várias oportunidade. Desta forma o que levaríamos em conta para tomar esta decisão seria:

    • Já sei o básico
    • O Framework/Tecnologia tem mercado onde eu estou (região)
    • O Framework/Tecnologia é utilizado em uma empresa onde quero atual
    • O Framework/Tecnologia resolve meu problema
    • Eu gosto de utilizar o Framework/Tecnologia

  • Estou pronto para estudar no balta.io?

    Com certeza! O primeiro passo é começar e você pode fazer isto agora mesmo!

    Começar de graça

Ainda tem dúvidas?





Assine nosso Newsletter

Receba em primeira mão todas as nossas novidades.

Cadastrar


balta.io

Sobre

  • Como funciona?
  • Seja Premium
  • Agenda
  • Blog
  • Todos os cursos

Cursos

  • Frontend
  • Backend
  • Mobile
  • Fullstack

Suporte

  • Termos de uso
  • Privacidade
  • Cancelamento
  • Central de ajuda

Redes Sociais

  • Telegram
  • Facebook
  • Instagram
  • YouTube
  • Twitch
  • LinkedIn
  • Discord