Как упростить бесконечное количество конструкций if при удалении объекта из конкретной таблицы БД (EF)?

Имеется вот такой ужас:

private void YesButton_Click(object sender, RoutedEventArgs e)
    {
        using(DetailsDbContext db = new DetailsDbContext())
        {
            if (currObj is AlternateResistor)
                db.AlternateResistors.Remove((AlternateResistor)currObj);
            else if(currObj is AnalogMicrocircuit)
                db.AnalogMicrocircuits.Remove((AnalogMicrocircuit)currObj);
            else if(currObj is CeramicCapacitor)
                db.CeramicCapacitors.Remove((CeramicCapacitor)currObj);
            else if (currObj is ComputerSystem)
                db.ComputerSystems.Remove((ComputerSystem)currObj);
            else if (currObj is ConstantResistor)
                db.ConstantResistor.Remove((ConstantResistor)currObj);
            else if (currObj is ElectrolyticCapacitor)
                db.ElectrolyticCapacitors.Remove((ElectrolyticCapacitor)currObj);
            else if (currObj is HighFreqConnector)
                db.HighFreqConnector.Remove((HighFreqConnector)currObj);
            else if (currObj is HighFreqDiode)
                db.HighFreqDiodes.Remove((HighFreqDiode)currObj);
            else if (currObj is Inductance)
                db.Inductances.Remove((Inductance)currObj);
            else if (currObj is LightDiode)
                db.LightDiodes.Remove((LightDiode)currObj);
            else if (currObj is LogicMicrocircuit)
                db.LogicMicrocircuits.Remove((LogicMicrocircuit)currObj);
            else if (currObj is LowFreqConnector)
                db.LowFreqConnectors.Remove((LowFreqConnector)currObj);
            else if (currObj is MembraneCapacitor)
                db.MembraneCapacitors.Remove((MembraneCapacitor)currObj);
            else if (currObj is RectifyingDiode)
                db.RectifyingDiodes.Remove((RectifyingDiode)currObj);
            else if (currObj is Relay)
                db.Relays.Remove((Relay)currObj);
            else if (currObj is Switcher)
                db.Switchers.Remove((Switcher)currObj);
            else if (currObj is Thyristor)
                db.Thyristors.Remove((Thyristor)currObj);
            else if (currObj is Transistor)
                db.Transistors.Remove((Transistor)currObj);
            else
                db.ZenerDiodes.Remove((ZenerDiode)currObj);

            db.SaveChanges();
        }
        isDeleted = true;
        this.DialogResult = true;
    }

currObj - объект типа Detail. В зависимости от того, какая деталь(наследник) лежит в currObj, вызывается метод удаления детали из нужной таблицы. Есть ли какой-то способ упростить это нечто?

Код ниже: класс-наследник DataContext:

public class DetailsDbContext : DbContext
{
    public DbSet<AlternateResistor> AlternateResistors { get; set; }
    public DbSet<AnalogMicrocircuit> AnalogMicrocircuits { get; set; }
    public DbSet<CeramicCapacitor> CeramicCapacitors { get; set; }
    public DbSet<ComputerSystem> ComputerSystems { get; set; }
    public DbSet<ConstantResistor> ConstantResistor { get; set; }
    public DbSet<ElectrolyticCapacitor> ElectrolyticCapacitors { get; set; }
    public DbSet<HighFreqConnector> HighFreqConnector { get; set; }
    public DbSet<HighFreqDiode> HighFreqDiodes { get; set; }
    public DbSet<Inductance> Inductances { get; set; }
    public DbSet<LightDiode> LightDiodes { get; set; }
    public DbSet<LogicMicrocircuit> LogicMicrocircuits { get; set; }
    public DbSet<LowFreqConnector> LowFreqConnectors { get; set; }
    public DbSet<MembraneCapacitor> MembraneCapacitors { get; set; }
    public DbSet<RectifyingDiode> RectifyingDiodes { get; set; }
    public DbSet<Relay> Relays { get; set; }
    public DbSet<Switcher> Switchers { get; set; }
    public DbSet<Thyristor> Thyristors { get; set; }
    public DbSet<Transistor> Transistors { get; set; }
    public DbSet<ZenerDiode> ZenerDiodes { get; set; }

    public List<Detail> GetData()
    {
        List<Detail> data = new List<Detail>();
        data.AddRange(AlternateResistors.ToList());
        data.AddRange(AnalogMicrocircuits.ToList());
        data.AddRange(CeramicCapacitors.ToList());
        data.AddRange(ComputerSystems.ToList());
        data.AddRange(ConstantResistor.ToList());
        data.AddRange(ElectrolyticCapacitors.ToList());
        data.AddRange(HighFreqConnector.ToList());
        data.AddRange(HighFreqDiodes.ToList());
        data.AddRange(Inductances.ToList());
        data.AddRange(LightDiodes.ToList());
        data.AddRange(LogicMicrocircuits.ToList());
        data.AddRange(LowFreqConnectors.ToList());
        data.AddRange(MembraneCapacitors.ToList());
        data.AddRange(RectifyingDiodes.ToList());
        data.AddRange(Relays.ToList());
        data.AddRange(Switchers.ToList());
        data.AddRange(Thyristors.ToList());
        data.AddRange(Transistors.ToList());
        data.AddRange(ZenerDiodes.ToList());
        return data;
    }

    protected override void OnConfiguring(DbContextOptionsBuilder opt) 
        => opt.UseSqlite("Data Source= Detailsdata.db");        
}

Ответы (0 шт):