Entity (C#)
Overview
Aplicar o padrão de Entidades em C# com foco em identidade (Id), invariantes, imutabilidade via record ou class com init, validação no método estático Create e operações seguras com Result.
Guidelines
- Ler
references/entity-pattern-cs.md(se disponível) antes de criar/alterar entidades. - Entidade como
classourecordcom construtorprivate/protected. - Expor API consistente:
CreateretornandoResult<T>. - Validar invariantes com VOs (
Id,Name,Email, etc.) e combinar erros. - Usar
initou métodos de domínio para alteração de estado garantindo imutabilidade externa. - Implementar
EqualseGetHashCodebaseados noId(entidades são identificadas por ID, não por estado). - Preferir métodos de domínio explícitos (ex.:
Deactivate(),ChangeName()) para comportamento relevante.
Workflow
- Identificar invariantes e tipo de identidade da entidade.
- Mapear dependências de VOs e entidades aninhadas para validação.
- Implementar a classe/record, com método estático
Createno padrão do projeto. - Sobrescrever
Equals/GetHashCodeporId. - Adicionar métodos de domínio quando houver transição de estado/comportamento.
- Criar ou atualizar testes cobrindo criação válida, inválida e igualdade por
Id. - Revisar consistência de mapeamento com repositórios/DTOs para novos campos.
References
- Consultar
../skills-standards.mdpara convenção global de nomenclatura (seção C#). - Seguir padrões de C# idiomáticos (PascalCase, namespaces).
Global Standards
- Consultar
../skills-standards.mdpara padrões globais de nomenclatura e convenções gerais entre skills.