Unit of Work
Coordenando Transações e Persistências
Contexto e Problema Identificado
Implementação Inicial do Método Create
public async Task CreateAsync(Product product, CancellationToken cancellationToken = default)
{
await context.Products.AddAsync(product, cancellationToken);
await context.SaveChangesAsync(cancellationToken);
}Task CreateAsync(Product product, CancellationToken cancellationToken = default);O Problema do SaveChangesAsync em Métodos Isolados
Compreendendo o Ciclo de Vida do DbContext
Consequências da Persistência Precoce
Impacto no Desempenho
Solução: Padrão Unit of Work
Reestruturando o Repositório
Implementando o Caso de Uso Create
Definindo a Abstração Unit of Work
Interface IUnitOfWork
Escopos de Vida de Serviço no .NET
Implementação Concreta do UnitOfWork
Configuração de Dependências
Registro no Container de DI
Expondo o Endpoint na API
Mapeamento da Rota POST
Testando a Implementação
Execução da Aplicação
Teste no Postman
Boas Práticas e Considerações Adicionais
Padrões Recomendados
Exemplo Aprimorado do Handler
Conclusão
Atualizado