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);
}
}