Skip to main content

Mapeamento de propriedades | IEntityTypeConfiguration | EFCore

  • Mapeamento de propriedades | IEntityTypeConfiguration | EFCore

Não, você não é obrigado a usar a classe de configuração (IEntityTypeConfiguration) para que uma propriedade nova seja mapeada no banco.

O EF Core por padrão usa o mapeamento por convenção, ou seja:

Se você adiciona uma nova propriedade pública ao seu modelo (HarvestModel) e essa propriedade é de um tipo suportado (ex: int, string, DateTime, etc), o EF já entende e mapeia automaticamente.


✅ Exemplo prático:

Modelo:

public class HarvestModel
{
public int Id { get; set; }
public string Name { get; set; } // Já existente
public DateTime StartDate { get; set; } // Propriedade nova
}

Mesmo sem ter nada na configuração, o EF Core já vai mapear StartDate porque segue as convenções padrão.


✅ Quando você precisa da configuração (HarvestConfiguration)?

Você só precisa criar a configuração com IEntityTypeConfiguration<HarvestModel> quando quiser:

Caso de usoExemplo
Mudar nome da colunabuilder.Property(p => p.Name).HasColumnName("Nome");
Alterar tipo/tamanhoHasMaxLength(50)
Restringir campos obrigatóriosIsRequired()
Mapear entidades complexasOwnsOne(...)
Definir chaves compostasHasKey(...)
RelacionamentosHasMany().WithOne()
ÍndicesHasIndex(...)

✅ Então por que usar HarvestConfiguration?

Mesmo que não seja obrigatório, usar classes de configuração separadas é uma boa prática para:

  • Deixar os modelos mais limpos (separação de responsabilidades)
  • Aplicar regras mais complexas
  • Reutilizar convenções de forma consistente

E o EF só vai aplicar a configuração se ela for registrada, por exemplo via:

modelBuilder.ApplyConfiguration(new HarvestConfiguration());

Ou dinamicamente:

modelBuilder.ApplyConfigurationsFromAssembly(typeof(AppDbContext).Assembly);

✅ Conclusão

  • ✔️ Se você só adicionou uma propriedade simples, o EF mapeia automaticamente por convenção.
  • ❗ Se você quer personalizar o mapeamento, aí sim você precisa da classe HarvestConfiguration.