Si entiendo correctamente, el Status es solo una clase base y no una entidad base participando en la herencia de la base de datos.
En tal caso, es importante no referirse nunca a Status class directamente dentro del modelo de entidad y la configuración, es decir, sin DbSet<Status> , sin propiedades de navegación de tipo Status o ICollection<Status> , sin modelBuilder.Entity<Status>() llamadas y no IEntityTypeConfiguration<Status> .
En su lugar, siempre debe hacer referencia a los tipos concretos heredados del Status . Para reutilizar el código de configuración, debe usar genérico restringido métodos o clases y pasar los tipos de entidades concretas.
Dado que está utilizando IEntityTypeConfiguration clases, probablemente lo más natural es hacer su StatusConfiguration clase 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);
}
}
y dejar que las clases de configuración de entidades derivadas se deriven de él:
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);
}
}