image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF

QC

Quevem Cruz03/09/2025 06:31
Compartilhe

Criando uma Lista de Contatos com Entity Framework Core e SQLite

  • #.NET Core
  • #SQLite
  • #C #

O Entity Framework Core (EF Core) é um ORM ( Mapeamento de Objeto Relacional ) que facilita o trabalho com bancos de dados em aplicações .NET. Neste tutorial, iremos aprender a criar uma lista de contatos simples usando o EF Core com SQLite como banco de dados. Fique a vontade para incrementar validações e exercitar outras habilidades neste projeto.

1. Criando o Projeto

Acesse a pasta de seus projetos e no terminal digite os seguintes comandos

dotnet new console -o AgendaContatos
cd AgendaContatos

O comando dotnet new console -o AgendaContatos irá criar o seu projeto dotnet do tipo console (modo texto) na pasta AgendaContatos que será criada na execução do comando.

O nome você pode mudar de acordo com o nome que deseja dar ao projeto

O comando cd AgendaContatos entra na pasta criada com o codigo de incio do projeto.

2. Instalando os Pacotes

Adicione os pacotes do EF Core para SQLite:

dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Tools

Os comando anteriores irão instalar os pacotes adequandos para o seu banco de dados sqlite

3. Criando o Modelo Contato

A classe Contato será o Modelo (Model) que iremos usar para gerar o banco de dados

public class Contato
{
  public int Id { get; set; }        // Chave primária
  public string Nome { get; set; }   // Nome do contato
  public string Telefone { get; set; } // Telefone
  public string Email { get; set; }    // E-mail
}

4. Criando o AppDbContext

Classe responsavel por criar o contexto do banco de dados. O Entity Framework Core usa esta classe para saber qual das classes serão utilizadas como modelos do seu banco de dados.

Observe no codigo a seguir que adicionamos como propiedade a classe Contatos do tipo DbSet<Contatos>{get;set;}

Veja tambem optionsBuilder.UseSqlite("Data Source=agenda.db"). Nesta linha esta configurado o arquivo do banco de dados Sqlite

using Microsoft.EntityFrameworkCore;


public class AppDbContext : DbContext
{
  public DbSet<Contato> Contatos { get; set; }//classe Contatos adicionada ao contexto de banco de dados


  protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
  {
      optionsBuilder.UseSqlite("Data Source=agenda.db");//arquivo de banco de dados definido
  }
}

5. Criando a Migração e o Banco

Agora, vamos gerar o banco de dados:

  1. Criar a migração inicial:
dotnet ef migrations add Inicial
  1. Aplicar a migração (criar agenda.db):
dotnet ef database update

6. Inserindo Contatos

Exemplo de código para inserir contatos na agenda:

class Program
{
  static void Main()
  {
      using var db = new AppDbContext();

      var contato = new Contato
      {
          Nome = "Maria Silva",
          Telefone = "(93) 99111-2233",
          Email = "maria@email.com"
      };

      db.Contatos.Add(contato);
      db.SaveChanges();

      Console.WriteLine("Contato salvo com sucesso!");
  }
}

7. Listando Contatos

Para listar todos os contatos cadastrados:

using (var db = new AppDbContext())
{
  var contatos = db.Contatos.ToList();

  foreach (var c in contatos)
  {
      Console.WriteLine($"{c.Id} - {c.Nome} - {c.Telefone} - {c.Email}");
  }
}

8. Atualizando Contatos

Exemplo de alteração do telefone de um contato:

using (var db = new AppDbContext())
{
  var contato = db.Contatos.First();
  contato.Telefone = "(93) 98888-7766";

  db.SaveChanges();

  Console.WriteLine("Contato atualizado!");
}

9. Removendo Contatos

Exemplo de exclusão de um contato:

using (var db = new AppDbContext())
{
  var contato = db.Contatos.First();
  db.Contatos.Remove(contato);
  db.SaveChanges();

  Console.WriteLine("Contato removido!");
}

10. Explorando o Banco

O arquivo agenda.db pode ser aberto com ferramentas como:

  • DB Browser for SQLite (gratuito)
  • Extensões do VS Code para SQLite

Assim, você pode visualizar a tabela Contatos e os registros de forma gráfica.

Observação

Neste Projeto não usamos uma estruta de pastas para organizar o prjeto podendos os arquivos ficarem todos na rais do sistema.

Porem é uma boa pratica separar as responsabilidades por pastas crando uma estrutura mais organizada para o projeto.

Aqui está um diagrama de organização que você pode adotar:

A pasta de Migrations e os arquivos contidos nela são gerados altomaticamente na cração das migrations

AgendaContatos/
│
├── Models/
│   └── Contato.cs              # Classe de modelo (representa a tabela Contatos)
│
├── Data/
│   └── AppDbContext.cs         # Classe de contexto do banco de dados
│
├── Migrations/                 # Arquivos gerados automaticamente pelo EF Core
│   ├── 20230903010101_Inicial.cs
│   └── AppDbContextModelSnapshot.cs
│
├── Program.cs                  # Código principal do programa (CRUD)
│
├── AgendaContatos.csproj       # Arquivo de configuração do projeto
└── agenda.db                   # Arquivo do banco SQLite gerado

Considerações Finais

Chegamos ao fim deste tutorial sobre como criar uma lista de contatos com Entity Framework Core e SQLite. 🚀

Ao longo do projeto, aprendemos a:

  • Criar um projeto .NET Console
  • Instalar e configurar o Entity Framework Core
  • Definir um modelo de dados (Contato)
  • Configurar o DbContext
  • Criar e aplicar migrações
  • Realizar operações básicas de CRUD (inserir, listar, atualizar e remover)
  • Organizar a estrutura do projeto de forma mais clara e profissional

Este é apenas o primeiro passo. A partir daqui, você pode expandir a aplicação para incluir:

  • Validações (ex.: verificar se o telefone ou e-mail já existem)
  • Interface Gráfica (Windows Forms, WPF ou MAUI)
  • API Web para acessar os contatos de qualquer lugar
  • Relacionamentos (ex.: contatos agrupados por categorias)

Agradecimento

Muito obrigado por acompanhar este tutorial até o final! 🙏

Espero que ele tenha sido útil para você dar os primeiros passos com o Entity Framework Core e o SQLite.

Continue praticando, explore novos desafios e lembre-se: a melhor forma de aprender programação é colocar a mão no código.

Compartilhe
Recomendados para você
Microsoft - Azure AZ-900
Ri Happy - Front-end do Zero #2
Avanade - Back-end com .NET e IA
Comentários (2)

QC

Quevem Cruz - 03/09/2025 21:56

Obrigado Dio Community.

Bem eu acredito que cada ferramenta tem seu proposito. As ferramentas de  Low-Code e No-Code tem suas limitações quando precisamos otimizar codigo gerado ou memsmo em casos mais criticos onde o programador precisa estar mais proximo da definição do codigo. Existem ambientes em que o uso de ferramentas convencionais de programação são mais adequadas.

O mesmo se aplica ao uso de ORMs existem aplicações em que escrever o sql diretamente para realizar determinadas consultas é mais performatico.

Com isso em mente me parece que as ferramentas tendem a cooexistir. Cada uma resolvendo as demandas em que são mais adequadas e cabe ao programador saber escolher qual o melhor momento para cada ferramenta.

DIO Community
DIO Community - 03/09/2025 11:09

Muito bacana, José! Seu artigo sobre a criação de uma lista de contatos usando Entity Framework Core e SQLite é uma ótima introdução prática para quem está começando com o .NET Core. A forma como você apresentou os passos de forma clara e didática, desde a criação do projeto até a organização da estrutura final, vai ajudar muitos desenvolvedores iniciantes a entenderem a importância do EF Core e como ele pode facilitar a interação com bancos de dados.

O uso do SQLite como exemplo também é uma excelente escolha, pois permite que o desenvolvedor tenha uma solução simples e funcional sem a complexidade de um servidor de banco de dados maior. Além disso, sua explicação sobre a organização do projeto e a estrutura recomendada é algo fundamental para quem está iniciando, ajudando a manter o código limpo e organizado.

Na DIO, acreditamos que aprender fazendo é a melhor maneira de consolidar o conhecimento. Seu artigo demonstra isso de forma clara, passando por um ciclo completo de criação, persistência e manipulação de dados. Agora me conta: você acredita que, com o crescimento das ferramentas de Low-Code e No-Code, o uso de ORMs como o EF Core vai se tornar cada vez mais essencial para desenvolvedores que desejam ter controle total sobre o banco de dados ou você enxerga essas ferramentas como uma solução complementar para quem não quer se aprofundar no backend?