Se entendi corretamente, o
Status
é apenas uma classe base e não uma entidade base participando da Herança de Banco de Dados. Nesse caso, é importante nunca se referir a
Status
class diretamente dentro do modelo e configuração da entidade, ou seja, sem DbSet<Status>
, nenhuma propriedade de navegação do tipo Status
ou ICollection<Status>
, não modelBuilder.Entity<Status>()
chamadas e sem IEntityTypeConfiguration<Status>
. Em vez disso, você sempre tem que se referir aos tipos concretos herdados do
Status
. Para reutilizar o código de configuração, você deve usar genérico restrito métodos ou classes e passar os tipos de entidade concretos. Como você está usando
IEntityTypeConfiguration
classes, provavelmente o mais natural é fazer seu StatusConfiguration
classe genérica:public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Status
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
e deixe as classes de configuração de entidade derivadas derivarem dele:
public class ItemConfiguration : StatusConfiguration<Item>
{
public override void Configure(EntityTypeBuilder<Item> builder)
{
base.Configure(builder); // <--
builder.ToTable("Item", "dbo").HasKey(c => c.Id);
builder.Property(c => c.Description).IsRequired().HasMaxLength(100);
}
}