Pokud tomu dobře rozumím, Status je pouze základní třída a nikoli základní entita účastnící se dědičnosti databáze.
V takovém případě je důležité nikdy neodkazovat na Status třída přímo v modelu entity a konfiguraci, tj. žádný DbSet<Status> , žádné navigační vlastnosti typu Status nebo ICollection<Status> , žádné modelBuilder.Entity<Status>() volání a žádná IEntityTypeConfiguration<Status> .
Místo toho musíte vždy odkazovat na konkrétní typy děděné z Status . Chcete-li znovu použít konfigurační kód, měli byste použít omezený obecný metody nebo třídy a předat konkrétní typy entit.
Protože používáte IEntityTypeConfiguration třídy, pravděpodobně nejpřirozenější je vytvořit si StatusConfiguration třída generic:
public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Status
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
a nechat odvozené třídy konfigurace entit odvozovat se od něj:
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);
}
}