Hvis jeg forstår det korrekt, vises Status
er kun en basisklasse og ikke en basis entitet deltager i Database Arv.
I sådanne tilfælde er det vigtigt aldrig at henvise til Status
klasse direkte inde i enhedsmodel og konfiguration, dvs. ingen DbSet
, ingen navigationsegenskaber af typen Status
eller ICollection
, ingen modelBuilder.Entity
opkald og ingen IEntityTypeConfiguration
I stedet skal du altid henvise til de konkrete typer, der arver fra Status
. For at genbruge konfigurationskoden skal du bruge begrænset generisk metoder eller klasser og bestå de konkrete enhedstyper.
Da du bruger IEntityTypeConfiguration
klasser, nok det mest naturlige er at lave din Statuskonfiguration
klasse generisk:
public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Status
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
og lad afledte enhedskonfigurationsklasser afledes fra det:
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);
}
}