В моем приложении у меня достаточно много отношений между многими.Я обнаружил, что пишу довольно много кода, который выглядит примерно так (я взял пример кода из примера проекта Contoso для простоты ссылок):
private void UpdateInstructorCourses(int[] selectedCourses, Instructor instructorToUpdate)
{
if (selectedCourses == null)
{
instructorToUpdate.Courses = new List<Course>();
return;
}
var selectedCoursesHS = new HashSet<int>(selectedCourses);
var instructorCourses = new HashSet<int>(instructorToUpdate.Courses.Select(c => c.CourseID));
foreach (var course in db.Courses)
{
if (selectedCoursesHS.Contains(course.CourseID))
{
if (!instructorCourses.Contains(course.CourseID))
{
instructorToUpdate.Courses.Add(course);
}
}
else
{
if (instructorCourses.Contains(course.CourseID))
{
instructorToUpdate.Courses.Remove(course);
}
}
}
}
Мои отношения многие ко многимВ общем и целом, состоит из центральной таблицы с большим количеством данных и набором справочных таблиц, в которых есть поля Id и Name.
Вышеприведенное замечательно, когда есть один или два оператора man-to-manys, но онстановится немного утомительным, и у меня есть несколько методов, которые следуют одной и той же базовой логике, описанной выше, но, очевидно, используют разные dbsets в foreach и другой объект в качестве второго параметра.
Есть ли хороший способ СУШИТЬ несколькометоды вверх?