CRUD com Entity Framework e Injeção no .NET

Rocketseat

Navegação Rápida:
Você sabia que praticamente tudo que usamos diariamente – das redes sociais ao aplicativo do banco – envolve CRUD? Pode não parecer, mas criar, ler, atualizar e deletar informações são as ações básicas que sustentam todas as aplicações modernas. Hoje vamos desvendar juntos o CRUD no universo .NET, utilizando ferramentas incríveis como o Entity Framework e a injeção de dependência. Pode parecer complicado à primeira vista, mas garanto: você vai se divertir e se surpreender com o que pode criar!
O que é CRUD? (desmistificando o acrônimo)
CRUD significa Create, Read, Update e Delete, ações fundamentais para qualquer aplicação:
- Create (Criar): ao cadastrar um novo produto numa loja online, você usa o Create.
- Read (Ler): procurando esse produto para comprar? Você está usando o Read.
- Update (Atualizar): se o lojista ajusta a descrição ou o preço, ele usa o Update.
- Delete (Deletar): se ele remove o produto do catálogo, isso é o Delete.
Entity Framework: seu melhor amigo no banco de dados
O Entity Framework é como um tradutor que simplifica a comunicação entre o seu código C# e o banco de dados. Em vez de quebrar a cabeça com comandos SQL complexos, você pode interagir usando objetos familiares, tornando o desenvolvimento mais fluido e rápido.
Para saber mais sobre Entity Framework, dá uma olhada nesse artigo que separamos para você 👇
Injeção de dependência: organizando a casa
Imagine sua caixa de ferramentas organizada, onde cada ferramenta está no lugar certo. A injeção de dependência faz exatamente isso com seu código, facilitando a manutenção e os testes. Ela garante que cada componente tenha exatamente o que precisa, de forma simples e clara.
Mãos à obra: criando nosso CRUD
Passo 1: configurando o ambiente
Instale o .NET SDK e um editor, como o Visual Studio Code. Para instalar o Entity Framework Core, use:
dotnet add package Microsoft.EntityFrameworkCore.InMemory
Passo 2: criando o projeto
Crie seu projeto API no terminal:
dotnet new webapi -o CRUDRocketseat
Passo 3: definindo o modelo de dados
Crie uma classe simples para representar um produto:
public class Produto { public int Id { get; set; } public string Nome { get; set; } public decimal Preco { get; set; } }
Passo 4: configurando o Entity Framework
Crie seu
DbContext
:using Microsoft.EntityFrameworkCore; public class AppDbContext : DbContext { public AppDbContext(DbContextOptions<AppDbContext> options) : base(options) { } public DbSet<Produto> Produtos { get; set; } }
Configure o banco no
Program.cs
:builder.Services.AddDbContext<AppDbContext>(options => options.UseInMemoryDatabase("ProdutosDB"));
Passo 5: implementando a injeção de dependência
No arquivo
Program.cs
, a configuração anterior já implementa a injeção de dependência automaticamente!Passo 6: criando os controladores
Crie o controlador para o CRUD:
using Microsoft.AspNetCore.Mvc; using Microsoft.EntityFrameworkCore; using System.Threading.Tasks; [ApiController] [Route("api/[controller]")] public class ProdutosController : ControllerBase { private readonly AppDbContext _context; public ProdutosController(AppDbContext context) { _context = context; } // Create [HttpPost] public async Task<IActionResult> Create([FromBody] Produto produto) { if (produto == null) return BadRequest("O produto não pode ser nulo."); _context.Produtos.Add(produto); await _context.SaveChangesAsync(); return CreatedAtAction(nameof(GetById), new { id = produto.Id }, produto); } // Read [HttpGet("{id}")] public async Task<IActionResult> GetById(int id) { var produto = await _context.Produtos.FindAsync(id); if (produto == null) return NotFound("Produto não encontrado."); return Ok(produto); } // Update [HttpPut("{id}")] public async Task<IActionResult> Update(int id, [FromBody] Produto produto) { if (produto == null) return BadRequest("Os dados do produto são inválidos."); if (id != produto.Id) return BadRequest("O ID do produto na URL não corresponde ao ID no corpo da requisição."); var produtoExistente = await _context.Produtos.FindAsync(id); if (produtoExistente == null) return NotFound("Produto não encontrado."); _context.Entry(produtoExistente).CurrentValues.SetValues(produto); await _context.SaveChangesAsync(); return NoContent(); } // Delete [HttpDelete("{id}")] public async Task<IActionResult> Delete(int id) { var produto = await _context.Produtos.FindAsync(id); if (produto == null) return NotFound("Produto não encontrado."); _context.Produtos.Remove(produto); await _context.SaveChangesAsync(); return NoContent(); } }
Passo 7: testando nosso CRUD
Use ferramentas como Postman ou Swagger (já incluído) para testar a API e visualizar seus resultados instantaneamente.
Dicas extras e próximos passos
- Sempre trate erros adequadamente.
- Explore outras formas de armazenamento além do banco em memória.
- Use autenticação e autorização para proteger suas APIs.
Conclusão
Parabéns! Você agora já consegue criar sua própria API CRUD com .NET. Continue explorando, experimentando e se divertindo com o desenvolvimento. Lembre-se, este é apenas o começo de uma jornada incrível!
Se quiser dar o próximo passo e se tornar um especialista em .NET, confira a Formação C# da Rocketseat, que vai levar seu conhecimento para outro nível. Bora codar e transformar o mundo através da tecnologia!
Artigos_
Explore conteúdos relacionados
Descubra mais artigos que complementam seu aprendizado e expandem seu conhecimento.