Create
Método Create: Implementação e Organização dos Repositórios
Estrutura do Diretório de Repositórios
Um diretório denominado Repositories será criado, contendo uma classe chamada ProductRepository. Esta implementação inicial é considerada básica, não representando a versão final da arquitetura.
Convenção de Nomenclatura
O sufixo Repository passa a ser utilizado para cada modelo existente no sistema, estabelecendo um padrão consistente de nomenclatura. Para o modelo Product, a classe correspondente será ProductRepository.
Implementação do Método Create
No núcleo do ProductRepository, são implementados métodos de forma assíncrona, visando otimização de performance e responsividade do sistema. Como exemplo, será implementado o método CREATE.
Assinatura do Método
public async Task<Product> CreateAsync
(Product product, CancellationToken cancellationToken = default)Características da assinatura:
Sufixo Async: Métodos assíncronos utilizam o sufixo Async para clareza semântica
Tipo de Retorno: Task<Product> permite retornar o produto após persistência
Parâmetros:
Product product: entidade a ser cirada
CancellationToken cancellationToken = default: Token para cancelamento de operações assíncronas
Considerações sobre o Tipo de Retorno
O tipo de retorno pode variar conforme a necessidade:
Task<void> ou Task: quando nenhum retorno é necessário
Task<Product>: quando se deseja retornar a entidade persistida
No cenário atual, opta-se por retornar Task<Product> pois o Entity Framework, ao persistir a entidade, gera automaticamente o valor do campo Id (quando configurado como identity no banco de dados), permitindo que este valor seja imediatamente disponibilizado.
Injeção de Dependência e Primary Constructor
O AppDbContext é injetado utilizando o recurso de Primary Constructor introduzido em versões recentes do C#:
Esta abordagem elimina a necessidade de declaração explícita de campos e construtores, simplificando a implementação.
Implementação do Método CreateAsync
Comportamento do Entity Framework
Quando o campo Id é definido como int (e configurado como identity no banco), o valor é gerado pelo SGBD durante a inserção. O Entity Framework recupera automaticamente este valor após a execução do SaveChangesAsync(), preenchendo a propriedade Id da entidade.
Fluxos
Considerações sobre Unit of Work
Posteriormente será abordado o padrão Unit of Work, que o Entity Framework já implementa internamente através do DbContext. Cada instância do contexto representa uma unidade de trabalho, gerenciando transações e consistência de dados.
Token de Cancelamento (CancellationToken)
A utilização de CancellationToke em métodos assíncronos é recomendada por várias razões:
Cancelamento de Operações Longas: Permite interromper operações demoradas
Execução em Batch: Especialmente útil em processamentos em lote
Responsividade: Permite que a aplicação responda a solicitações de cancelamento do usuário
Gerenciamento de Recursos: Libera recursos quando operações são canceladas
O parâmetro default utiliza o token padrão quando nenhum é especificado explicitamente.
Com esta implementação, o método CreateAsync está finalizado e pronto para ser utilizado pelos endpoints da API, mantendo a separação de responsabilidades e preparando o sistema para futuras evoluções arquiteturais.
Atualizado




