Jika saya mengerti dengan benar, Status hanyalah kelas dasar dan bukan entitas dasar berpartisipasi dalam Warisan Database.
Dalam kasus seperti itu, penting untuk tidak pernah merujuk ke Status kelas langsung di dalam model dan konfigurasi entitas, mis. tidak ada DbSet<Status> , tidak ada properti navigasi dengan tipe Status atau ICollection<Status> , tidak ada modelBuilder.Entity<Status>() panggilan dan tidak ada IEntityTypeConfiguration<Status> .
Sebagai gantinya, Anda selalu harus merujuk ke tipe konkret yang diwarisi dari Status . Untuk menggunakan kembali kode konfigurasi, Anda harus menggunakan generik terbatas metode atau kelas dan lulus tipe entitas konkret.
Karena Anda menggunakan IEntityTypeConfiguration kelas, mungkin yang paling alami adalah membuat StatusConfiguration . Anda kelas generik:
public class StatusConfiguration<TEntity> : IEntityTypeConfiguration<TEntity>
where TEntity : Status
{
public virtual void Configure(EntityTypeBuilder<TEntity> builder)
{
builder.Property(c => c.updateUserName).IsRequired().HasMaxLength(50);
}
}
dan biarkan kelas konfigurasi entitas turunan diturunkan darinya:
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);
}
}