> ## Content Index
> Fetch the complete content index at: https://www.azurebrasil.cloud/llms.txt
> Use this file to discover other available public pages before exploring further.

# Persistência real na sua API .NET: parte 1
- URL: https://www.azurebrasil.cloud/blog/persistencia-real-na-sua-api-net-parte-1/
- Published: 2026-03-24T12:00:48.000Z
- Updated: 2026-03-24T12:00:48.000Z
- Description: Preparando o ambiente com PostgreSQL e DBeaver
- Author: Gabriel Fracalossi Nazario

Nos artigos anteriores desta série, evoluímos gradualmente nossa aplicação: [No primeiro artigo](https://www.azurebrasil.cloud/blog/primeiros-passos-com-net/), entendemos os fundamentos do .NET e construímos aplicações simples; [No segundo](https://www.azurebrasil.cloud/blog/criando-sua-primeira-api-com-net/), criamos nossa primeira API funcional com [ASP.NET Core](https://dotnet.microsoft.com/pt-br/learn/aspnet/what-is-aspnet-core?ref=azurebrasil.cloud); [No terceiro](https://www.azurebrasil.cloud/blog/da-api-simples-a-api-profissional-organizacao-e-boas-praticas-no-asp-net-core/), organizamos melhor o código, introduzindo uma camada de serviços e aplicando o padrão de Injeção de Dependência para desacoplar responsabilidades.

> Recomendo a leitura dos outros artigos antes de dar sequência aqui, pois esse é uma continuação direta do mesmo projeto!

Chegamos a um ponto muito importante: nossa API já está estruturada e organizada, mas ainda persiste os dados em memória. Para aproximar ainda mais esse projeto de um cenário real de produção, o próximo passo natural e essencial, é integrar a aplicação com um banco de dados real, permitindo que os dados sejam persistidos de forma duradoura.

É importante destacar que o Entity Framework Core é a tecnologia mais utilizada para esse propósito dentro do ecossistema .NET, mas como esse assunto já foi abordado com profundidade no artigo do Charlison ([Entity Framework em APIs modernas](https://www.azurebrasil.cloud/blog/entity-framework-em-apis-modernas/)), recomendo fortemente que você utilize esse artigo como base para compreender os detalhes conceituais do EF Core, como migrations, DbContext, mapeamento de entidades e o fluxo de persistência.

Aqui, vamos focar em aplicar essa integração no contexto do projeto que já construímos ao longo da série, organizando o código para receber o EF Core, criar um banco real e preparar o terreno para evoluções futuras.

Até agora, nossa API utiliza listas em memória para armazenar dados. Isso é suficiente para aprendizagem e protótipos, mas:

- Não há persistência entre execuções
- Dados desaparecem ao reiniciar a aplicação
- Não há concorrência ou integridade de dados
- Não é escalável

Na maioria das aplicações reais, é fundamental que os dados sejam gravados em um banco de dados que atenda requisitos de durabilidade e consistência. Um e-commerce precisa que os pedidos sobrevivam a reinicializações de servidor. Um sistema de cadastro não pode perder dados entre atualizações. Um painel de gestão precisa de histórico. Tudo isso depende de um banco de dados bem integrado à aplicação.

Integrar uma camada de persistência abre portas para:

- Trabalhar com bancos [SQL](https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/what-is-sql-database?ref=azurebrasil.cloud) e [NoSQL](https://azure.microsoft.com/pt-br/resources/cloud-computing-dictionary/what-is-nosql-database?ref=azurebrasil.cloud)
- Executar migrações de esquema (migrations)
- Integrar relatórios e dashboards
- Escalar para arquiteturas distribuídas

Assumindo que você já leu o artigo do Charlison e compreendeu os conceitos de EF Core, vamos agora aplicar isso no seu projeto.

Neste artigo utilizaremos o PostgreSQL como banco de dados. Se você ainda não tem o PostgreSQL instalado, baixe a versão mais recente diretamente em [https://www.postgresql.org/download/](https://www.postgresql.org/download/?ref=azurebrasil.cloud) e instale com as opções padrão. Durante a instalação, você será solicitado a definir uma senha para o usuário **postgres,** guarde essa senha, pois vamos precisar dela logo.

O PostgreSQL é um banco de dados relacional open source com décadas de maturidade, adotado amplamente tanto em startups quanto em grandes empresas. Ele oferece excelente performance, suporte robusto a transações, tipos de dados avançados e integração nativa com praticamente todas as linguagens e frameworks modernos, incluindo o .NET via EF Core. É uma escolha sólida para projetos profissionais que precisam de confiabilidade e escalabilidade.

Para gerenciar o banco de dados, vamos utilizar o DBeaver, que é uma ferramenta de administração de banco de dados universal, gratuita e com uma interface muito bem construída. Ela suporta PostgreSQL, SQL Server, MySQL, SQLite e dezenas de outros bancos, o que a torna extremamente útil para quem trabalha em projetos variados. Se você ainda não tem o DBeaver instalado, baixe em [https://dbeaver.io/download/](https://dbeaver.io/download/?ref=azurebrasil.cloud).

Com o DBeaver aberto, o primeiro passo é criar uma conexão com o PostgreSQL local. Clique em "Nova Conexão" (ícone de tomada no canto superior esquerdo):

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-13-1-1.png)

Na janela que abrir, selecione **PostgreSQL** e clique em "Avançar":

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-14-1.png)

Preencha as configurações de conexão:

- Host: localhost
- Porta: 5432
- Banco de dados: postgres
- Nome de usuário: postgres
- Senha: *(a senha que você definiu durante a instalação)*

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-15-1.png)

> **OBS:** Antes de concluir, há um detalhe importante que merece atenção: por padrão, o DBeaver exibe apenas o banco **postgres** na árvore de navegação. Se você criar um banco novo e ele não aparecer, é porque a opção "Exibir todos os bancos de dados" não está marcada. Para evitar esse problema, marque a opção, assim todos os bancos criados aparecerão automaticamente na árvore de navegação do DBeaver.

Agora clique em "Testar Conexão" para validar. Se aparecer "Conectado", clique em "Concluir".

Com a conexão criada, agora vamos criar o banco de dados que nossa API vai utilizar. No painel esquerdo, clique com o botão direito sobre a conexão **postgres** selecione "Criar -> Banco de dados":

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-16-1.png)

Na janela que abrir, preencha o nome do banco como **minhaapidb** e clique em "Ok":

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-18-1.png)

O banco aparecerá no painel esquerdo do DBeaver. Pronto, o banco está criado e pronto para receber nossas tabelas via migrations.

![](https://storage.ghost.io/c/00/52/0052dced-0017-4d07-b190-1f5c48e0ab59/content/images/2026/03/image-19-1.png)

Banco de dados "minhaapidb" criado

O ambiente está configurado. Temos o PostgreSQL instalado, o DBeaver conectado e o banco **minhaapidb** criado e pronto para receber dados.

No próximo artigo, vamos conectar o projeto a esse banco: instalaremos os pacotes do EF Core, criaremos o **ApplicationDbContext**, configuraremos a connection string com segurança, geraremos as migrations e atualizaremos o **ProdutoService** para persistir dados de verdade, encerrando com um teste completo no Swagger e a confirmação dos dados no DBeaver.

A ideia continua a mesma: evoluir passo a passo, conectando teoria com prática, para que cada conceito faça sentido dentro de um projeto real.

Disponibilizei o projeto de exemplo que usamos aqui no artigo. Você pode baixar direto do GitHub [clicando aqui](https://github.com/GabrielFracalossi/MinhaPrimeiraApi?ref=azurebrasil.cloud)!