Как лучше реализовать выбор конкретных действий?
У меня есть приложение, которое работает с базой данных через 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;
}