Repository (C#)
Overview
Aplicar o padrão de repositório em C# para escrita e leitura de entidades de domínio com contratos (interfaces) no domínio e implementação desacoplada em infraestrutura.
Guidelines
- Definir interface (
ICustomerRepository) no namespace de domínio. - Implementar no adapter de infraestrutura (EF Core, Dapper, etc.) retornando
Task<Result<T>>ouTask<T?>. - Mapear domínio explicitamente:
ToDomain(db -> entity) eFromDomain(entity -> db). - Tratar falhas com
Result.Failure(...). - Manter separação CQRS: Repositories para comando/escrita, Queries para leitura/projeção DTO (Performance).
Workflow
- Confirmar agregados/entidades cobertos pelo repositório.
- Definir/ajustar interface (
ICustomerRepository) no namespace de domínio. - Implementar adapter de infraestrutura respeitando o contrato.
- Implementar mapeamento
ToDomain/FromDomain. - Garantir consistência transacional (Unit of Work) para operações compostas.
- Criar/ajustar mocks (NSubstitute, Moq) para testes de use case.
References
- Consultar references/repository-pattern-cs.md para exemplos e padrões detalhados.
- Consultar
../skills-standards.mdpara convenção global de nomenclatura (seção C#).
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.