Jeśli dobrze rozumiem, Status to tylko klasa bazowa, a nie podstawowa jednostka udział w dziedziczeniu baz danych.
W takim przypadku ważne jest, aby nigdy nie odnosić się do Status klasa bezpośrednio w modelu encji i konfiguracji, tj. bez DbSet<Status> , brak właściwości nawigacji typu Status lub ICollection<Status> , nie modelBuilder.Entity<Status>() wywołania i brak IEntityTypeConfiguration<Status> .
Zamiast tego zawsze musisz odwoływać się do konkretnych typów dziedziczących po Status . Aby ponownie użyć kodu konfiguracyjnego, powinieneś użyć ograniczonego ogólnego metody lub klasy i przekazać konkretne typy jednostek.
Ponieważ używasz IEntityTypeConfiguration klas, prawdopodobnie najbardziej naturalnym jest utworzenie StatusConfiguration klasa ogólna:
public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Status
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
i niech pochodne klasy konfiguracji encji będą z niego wywodzić:
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);
}
}