Как лучше реализовать выбор конкретных действий?

У меня есть приложение, которое работает с базой данных через EntityFramework, в самом приложении у меня отображаются таблицы из бд через DataGridView, выбор таблицы происходит через ComboBoxItem. В коде обработчика кнопки "добавить" у меня есть switch и там происходит вызов хранимой функции.

Вопрос такой: правильный ли это подход и если нет, как лучше было бы это реализовать, учитывая что у меня есть кнопки обновления данных и удаления, где так же аналогичный код на каждую кнопку, свитч и прописывание каждой отдельной команды для каждой отдельной таблицы, получается что у меня просто очень много одинакового кода и меня это смущает.

string req = textBoxRequest.Text;
        var reqArr = req.Split(',');

        switch (comboBoxItemTable.Text)
        {
            case "Преподаватели":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_teacher({req})");
                break;
            case "Работа преподавателя":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_teacherwork({Convert.ToInt32(reqArr[0])}, {Convert.ToInt32(reqArr[1])}, {reqArr[2]}, {reqArr[3]})");
                break;
            case "Дисциплина":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_subject({Convert.ToInt32(reqArr[0])}, {reqArr[1]}, {Convert.ToInt16(reqArr[2])}, {Convert.ToInt16(reqArr[3])}, {Convert.ToInt16(reqArr[4])}, {Convert.ToBoolean(reqArr[5])}, {Convert.ToBoolean(reqArr[6])}, {Convert.ToInt16(reqArr[7])})");
                break;
            case "Студент":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_stud({reqArr[0]}, {reqArr[1]})");
                break;
            case "Профиль":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_profile({reqArr[0]}, {reqArr[1]})");
                break;
            case "Направление":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_naprav({reqArr[0]}, {reqArr[1]})");
                break;
            case "Группы":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_grops({req})");
                break;
            case "Кафедра":
                dbContext.Database.ExecuteSqlInterpolated($"select set_data_department({Convert.ToInt16(reqArr[0])}, {reqArr[1]})");
                break;
            default:
                MessageBox.Show("Error: Такой таблицы не существует!");
                break;
        }

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